Moved lume.invert() to be near lume.clone()

This makes the series of python-like functions (map, all, any, reduce,
set, filter) consecutive in the source and readme, which seems like a
more logical order.
This commit is contained in:
rxi 2014-03-08 15:18:46 +00:00
parent 8f4d1b158f
commit 2f388bc2c7
2 changed files with 16 additions and 14 deletions

View File

@ -115,13 +115,6 @@ an error is raised,
lume.reduce({1, 2, 3}, function(a, b) return a + b end) -- Returns 6 lume.reduce({1, 2, 3}, function(a, b) return a + b end) -- Returns 6
``` ```
### lume.invert(t)
Returns a copy of the table where the keys have become the values and the
values the keys.
```lua
lume.invert({a = "x", b = "y"}) -- returns {x = "a", y = "b"}
```
### lume.set(t [, retainkeys]) ### lume.set(t [, retainkeys])
Returns a copy of the `t` table with all the duplicate values removed. If Returns a copy of the `t` table with all the duplicate values removed. If
`retainkeys` is true the table is not treated as an array and retains its `retainkeys` is true the table is not treated as an array and retains its
@ -160,6 +153,13 @@ than a string. Creates and returns a new array of the given slice.
lume.slice({"a", "b", "c", "d", "e"}, 2, 4) -- Returns {"b", "c", "d"} lume.slice({"a", "b", "c", "d", "e"}, 2, 4) -- Returns {"b", "c", "d"}
``` ```
### lume.invert(t)
Returns a copy of the table where the keys have become the values and the
values the keys.
```lua
lume.invert({a = "x", b = "y"}) -- returns {x = "a", y = "b"}
```
### lume.clone(t) ### lume.clone(t)
Returns a shallow copy of the table `t`. Returns a shallow copy of the table `t`.

View File

@ -76,6 +76,7 @@ function lume.shuffle(t)
end end
function lume.array(...) function lume.array(...)
local t = {} local t = {}
for x in unpack({...}) do t[#t + 1] = x end for x in unpack({...}) do t[#t + 1] = x end
@ -126,13 +127,6 @@ function lume.reduce(t, fn, first)
end end
function lume.invert(t)
local rtn = {}
for k, v in pairs(t) do rtn[v] = k end
return rtn
end
function lume.set(t, retainkeys) function lume.set(t, retainkeys)
local rtn = {} local rtn = {}
for k, v in pairs(lume.invert(t)) do for k, v in pairs(lume.invert(t)) do
@ -159,6 +153,7 @@ function lume.merge(t, t2, retainkeys)
end end
function lume.find(t, value) function lume.find(t, value)
for k, v in pairs(t) do for k, v in pairs(t) do
if v == value then return k end if v == value then return k end
@ -178,6 +173,13 @@ function lume.slice(t, i, j)
end end
function lume.invert(t)
local rtn = {}
for k, v in pairs(t) do rtn[v] = k end
return rtn
end
function lume.clone(t) function lume.clone(t)
local rtn = {} local rtn = {}
for k, v in pairs(t) do rtn[k] = v end for k, v in pairs(t) do rtn[k] = v end