34 lines
774 B
Plaintext
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
|
|
}
|