util.serialization: Optimize handling of last table separator

Fewer next() calls and a step towards allowing use of a different iterator.
vault/master
Kim Alvefur 7 years ago
parent b4f63e7141
commit 8dbde14697
  1. 12
      util/serialization.lua

@ -163,7 +163,9 @@ local function new(opt)
local indent = s_rep(indentwith, d);
local numkey = 1;
local ktyp, vtyp;
local had_items = false;
for k,v in next,t do
had_items = true;
o[l], l = itemstart, l + 1;
o[l], l = indent, l + 1;
ktyp, vtyp = type(k), type(v);
@ -194,14 +196,10 @@ local function new(opt)
else
o[l], l = ser(v), l + 1;
end
-- last item?
if next(t, k) ~= nil then
o[l], l = itemsep, l + 1;
else
o[l], l = itemlast, l + 1;
end
o[l], l = itemsep, l + 1;
end
if next(t) ~= nil then
if had_items then
o[l - 1] = itemlast;
o[l], l = s_rep(indentwith, d-1), l + 1;
end
o[l], l = tend, l +1;

Loading…
Cancel
Save