# HG changeset patch # User Kim Alvefur # Date 1449887157 -3600 # Node ID 95ad6e68e20373586fd39b7f7aabb5771360e125 # Parent 2ce2b194d501112516609bbfb7700895da21fd07 mod_storage_gdbm: Refactor for readability (bye single-char variable names) diff -r 2ce2b194d501 -r 95ad6e68e203 mod_storage_gdbm/mod_storage_gdbm.lua --- a/mod_storage_gdbm/mod_storage_gdbm.lua Fri Dec 11 18:20:14 2015 +0100 +++ b/mod_storage_gdbm/mod_storage_gdbm.lua Sat Dec 12 03:25:57 2015 +0100 @@ -29,10 +29,6 @@ return getmetatable(s) == st.stanza_mt; end -local function t(c, a, b) - if c then return a; end return b; -end - local base_path = path.resolve_relative_path(prosody.paths.data, module.host); lfs.mkdir(base_path); @@ -106,26 +102,26 @@ query = query or empty; local meta = self:get(username) or empty; local prefix = (username or "@") .. "#"; - local r = query.reverse; - local d = t(r, -1, 1); - local s = meta[t(r, query.before, query.after)]; + local reverse = query.reverse; + local step = reverse and -1 or 1; + local first = meta[query.after]; + local last = meta[query.before]; + -- we don't want to include the actual 'after' or 'before' item + if first then first = first + 1; end + if last then last = last - 1; end + first, last = first or 1, last or #meta; + if reverse then first, last = last, first; end local limit = query.limit; - if s then - s = s + d; - else - s = t(r, #meta, 1) - end - local e = t(r, 1, #meta); - local c = 0; + local count = 0; return function () - if limit and c >= limit then return end + if limit and count >= limit then return end local item, value; - for i = s, e, d do + for i = first, last, step do item = meta[i]; if (not query.with or item.with == query.with) and (not query.start or item.when >= query.start) and (not query["end"] or item.when <= query["end"]) then - s = i + d; c = c + 1; + first = i + step; count = count + 1; value = self:get(prefix..item.key); return item.key, (deserialize_map[item.type] or id)(value), item.when, item.with; end