update nvim
This commit is contained in:
parent
3338d39206
commit
786b0e0970
31 changed files with 2204 additions and 15 deletions
36
lua/phoenix/utils/slice_table.lua
Normal file
36
lua/phoenix/utils/slice_table.lua
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
local checkers = require("phoenix.utils.type-checkers")
|
||||
|
||||
-- Returns a shallow copy of a portion of a table into a new table
|
||||
-- @param obj {table}
|
||||
-- @param start {number} start value
|
||||
-- @param finish {number} end value
|
||||
-- @return {boolean}
|
||||
local slice_table = function(obj, start, finish)
|
||||
if checkers.is_empty(obj) or start == finish then
|
||||
return {}
|
||||
end
|
||||
|
||||
local output = {}
|
||||
local _finish = #obj
|
||||
local _start = 1
|
||||
|
||||
if start >= 0 then
|
||||
_start = start
|
||||
elseif checkers.is_nil(finish) and start < 0 then
|
||||
_start = #obj + start + 1
|
||||
end
|
||||
|
||||
if finish and finish >= 0 then
|
||||
_finish = finish - 1
|
||||
elseif finish and finish < 0 then
|
||||
_finish = #obj + finish
|
||||
end
|
||||
|
||||
for i = _start, _finish do
|
||||
table.insert(output, obj[i])
|
||||
end
|
||||
|
||||
return output
|
||||
end
|
||||
|
||||
return slice_table
|
||||
Loading…
Add table
Add a link
Reference in a new issue