Module:Shared: Difference between revisions

no edit summary
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
        table.insert(sortedTable, {key = k, value = v})
    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


918

edits