mirror of
https://github.com/TangentFoxy/lume.git
synced 2024-12-13 17:24:21 +00:00
Removed function in lume.slice()
Moved the function index() from lume.slice()'s body to local var absindex, this improves the performance of lume.slice() on luajit significantly and improves it to a lesser extent on non-jit lua.
This commit is contained in:
parent
94977b4f7e
commit
335b928cae
9
lume.lua
9
lume.lua
@ -27,6 +27,10 @@ local patternescape = function(str)
|
|||||||
return str:gsub("[%(%)%.%%%+%-%*%?%[%]%^%$]", "%%%1")
|
return str:gsub("[%(%)%.%%%+%-%*%?%[%]%^%$]", "%%%1")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local absindex = function(len, i)
|
||||||
|
return i < 0 and (len + i + 1) or i
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
function lume.clamp(x, min, max)
|
function lume.clamp(x, min, max)
|
||||||
return x < min and min or (x > max and max or x)
|
return x < min and min or (x > max and max or x)
|
||||||
@ -194,9 +198,8 @@ end
|
|||||||
|
|
||||||
|
|
||||||
function lume.slice(t, i, j)
|
function lume.slice(t, i, j)
|
||||||
local function index(x) return x < 0 and (#t + x + 1) or x end
|
i = i and absindex(#t, i) or 1
|
||||||
i = i and index(i) or 1
|
j = j and absindex(#t, j) or #t
|
||||||
j = j and index(j) or #t
|
|
||||||
local rtn = {}
|
local rtn = {}
|
||||||
for i = math_max(i, 1), math_min(j, #t) do
|
for i = math_max(i, 1), math_min(j, #t) do
|
||||||
rtn[#rtn + 1] = t[i]
|
rtn[#rtn + 1] = t[i]
|
||||||
|
Loading…
Reference in New Issue
Block a user