Software /
code /
prosody
Changeset
9329:19bc3ec13f07
util.json: Use util.iterators.sorted_pairs() in ordered mode
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 21 Sep 2018 14:35:35 +0100 |
parents | 9328:a9592107021b |
children | 9330:36badabc85ce |
files | util/json.lua |
diffstat | 1 files changed, 8 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/util/json.lua Fri Sep 21 14:30:20 2018 +0100 +++ b/util/json.lua Fri Sep 21 14:35:35 2018 +0100 @@ -7,10 +7,10 @@ -- local type = type; -local t_insert, t_concat, t_remove, t_sort = table.insert, table.concat, table.remove, table.sort; +local t_insert, t_concat, t_remove = table.insert, table.concat, table.remove; local s_char = string.char; local tostring, tonumber = tostring, tonumber; -local pairs, ipairs = pairs, ipairs; +local pairs, ipairs, spairs = pairs, ipairs, require "util.iterators".sorted_pairs; local next = next; local getmetatable, setmetatable = getmetatable, setmetatable; local print = print; @@ -95,25 +95,12 @@ if next(__hash) ~= nil or next(hash) ~= nil or next(__array) == nil then t_insert(buffer, "{"); local mark = #buffer; - if buffer.ordered then - local keys = {}; - for k in pairs(hash) do - t_insert(keys, k); - end - t_sort(keys); - for _,k in ipairs(keys) do - stringsave(k, buffer); - t_insert(buffer, ":"); - simplesave(hash[k], buffer); - t_insert(buffer, ","); - end - else - for k,v in pairs(hash) do - stringsave(k, buffer); - t_insert(buffer, ":"); - simplesave(v, buffer); - t_insert(buffer, ","); - end + local _pairs = buffer.ordered and spairs or pairs; + for k,v in _pairs(hash) do + stringsave(k, buffer); + t_insert(buffer, ":"); + simplesave(v, buffer); + t_insert(buffer, ","); end if next(__hash) ~= nil then t_insert(buffer, "\"__hash\":[");