mirror of
https://github.com/TangentFoxy/lume.git
synced 2024-11-19 07:04:24 +00:00
Added lume.sort(), updated tests & README
This commit is contained in:
parent
b873c043c5
commit
7a0f5a0831
10
README.md
10
README.md
@ -77,6 +77,16 @@ lume.weightedchoice({ ["cat"] = 10, ["dog"] = 5, ["frog"] = 0 })
|
|||||||
### lume.shuffle(t)
|
### lume.shuffle(t)
|
||||||
Returns a shuffled copy of the array `t`.
|
Returns a shuffled copy of the array `t`.
|
||||||
|
|
||||||
|
### lume.sort(t [, comp])
|
||||||
|
Returns a copy of the array `t` with all its items sorted. If `comp` is a
|
||||||
|
function it will be used to compare the items when sorting. If `comp` is a
|
||||||
|
string the it will be used as the key to sort the items by.
|
||||||
|
```lua
|
||||||
|
lume.sort({ 1, 4, 3, 2, 5 }) -- Returns { 1, 2, 3, 4, 5 }
|
||||||
|
lume.sort({ {z=2}, {z=3}, {z=1} }, "z") -- Returns { {z=1}, {z=2}, {z=3} }
|
||||||
|
lume.sort({ 1, 3, 2 }, function(a, b) return a > b end) -- Returns { 3, 2, 1 }
|
||||||
|
```
|
||||||
|
|
||||||
### lume.array(...)
|
### lume.array(...)
|
||||||
Iterates the supplied iterator and returns an array filled with the values.
|
Iterates the supplied iterator and returns an array filled with the values.
|
||||||
```lua
|
```lua
|
||||||
|
15
lume.lua
15
lume.lua
@ -158,6 +158,21 @@ function lume.shuffle(t)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function lume.sort(t, comp)
|
||||||
|
local rtn = lume.clone(t)
|
||||||
|
if comp then
|
||||||
|
if type(comp) == "string" then
|
||||||
|
table.sort(rtn, function(a, b) return a[comp] < b[comp] end)
|
||||||
|
else
|
||||||
|
table.sort(rtn, comp)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
table.sort(rtn)
|
||||||
|
end
|
||||||
|
return rtn
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
function lume.array(...)
|
function lume.array(...)
|
||||||
local t = {}
|
local t = {}
|
||||||
for x in ... do t[#t + 1] = x end
|
for x in ... do t[#t + 1] = x end
|
||||||
|
@ -115,6 +115,18 @@ tests["lume.shuffle"] = function()
|
|||||||
testeq( lume.shuffle({}), {} )
|
testeq( lume.shuffle({}), {} )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- lume.sort
|
||||||
|
tests["lume.sort"] = function()
|
||||||
|
local t = { 1, 5, 2, 4, 3 }
|
||||||
|
local fn = function(a, b) return a > b end
|
||||||
|
testeq( t == lume.sort(t), false )
|
||||||
|
testeq( lume.sort(t), { 1, 2, 3, 4, 5 } )
|
||||||
|
testeq( lume.sort(t, fn), { 5, 4, 3, 2, 1 } )
|
||||||
|
testeq( t, { 1, 5, 2, 4, 3 } )
|
||||||
|
local t = { { id = 2 }, { id = 3 }, { id = 1 } }
|
||||||
|
testeq( lume.sort(t, "id"), { { id = 1 }, { id = 2 }, { id = 3 } })
|
||||||
|
end
|
||||||
|
|
||||||
-- lume.array
|
-- lume.array
|
||||||
tests["lume.array"] = function()
|
tests["lume.array"] = function()
|
||||||
local t = lume.array(pairs({a=0, b=0, c=0}))
|
local t = lume.array(pairs({a=0, b=0, c=0}))
|
||||||
|
Loading…
Reference in New Issue
Block a user