918
edits
No edit summary |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 52: | Line 52: | ||
-- Function to sort a dictionary-like structure where items are added like tbl['key'] = value | -- Function to sort a dictionary-like structure where items are added like tbl['key'] = value | ||
-- We need to turn this structure into a table first, in order to sort it. | -- We need to turn this structure into a table first, in order to sort it. | ||
function p.sortDictionary(dict, comparer) | function p.sortDictionary(dict, comparer, factory) | ||
local sortedTable = {} | local sortedTable = {} | ||
for k, v in pairs(dict) do | for k, v in pairs(dict) do | ||
local newValue = nil | |||
if factory then | |||
newValue = factory(k, v) | |||
end | |||
newValue = newValue or {key = k, value = v} | |||
table.insert(sortedTable, newValue) | |||
end | end | ||
Line 87: | Line 92: | ||
end | end | ||
end | end | ||
end | |||
-- Makes a deep copy of a table or otherwise object. | |||
-- Yoinked from http://lua-users.org/wiki/CopyTable | |||
function p.deepcopy(orig) | |||
local copy | |||
if type(orig) == 'table' then | |||
copy = {} | |||
for orig_key, orig_value in next, orig, nil do | |||
copy[deepcopy(orig_key)] = deepcopy(orig_value) | |||
end | |||
setmetatable(copy, deepcopy(getmetatable(orig))) | |||
else -- number, string, boolean, etc | |||
copy = orig | |||
end | |||
return copy | |||
end | end | ||
edits