lazuscripts-utility/gtable.moon
Paul Liverman III c615ea4b1f re-initialized
tl;dr: rewriting history of this repo because I have accidentally
included the history of OTHER repos in it due to either a bug with
git subtree or a misunderstanding of how it functions on my part
2018-03-04 11:41:07 -08:00

34 lines
774 B
Plaintext

-- appends n arrays to the end of the first array
append = (tab1, ...) ->
for n = 1, select "#", ...
tab2 = select n, ...
for i = 1, #tab2
tab1[#tab1+1] = tab2[i]
return tab1
-- returns a new table shallow copying data from all arguments
-- later arguments overwrite any keys in earlier arguments
-- ignores non-table arguments (skipping them)
shallow_copy = (...) ->
new = {}
for n = 1, select "#", ...
tab = select n, ...
if "table" == type tab
for k,v in pairs tab
new[k] = v
return new
-- returns a new table with flipped keys and values
invert = (tab) ->
new = {}
for key, value in pairs tab
new[value] = key
return new
{
:append
:shallow_copy
shallow_merge: shallow_copy -- TODO deprecate
:invert
}