shell-ahk
Version:
`Lodash`/`jQuery` for `AHK`.
36 lines (26 loc) • 897 B
text/coffeescript
# @ts-check
import slice_getType from './getType'
import slice_reverse from './reverse'
###* @type import('./slice').Slice ###
export default (list, start = 0, end = 0) ->
unless (slice_getType list) == 'array'
throw new Error "slice: Expected an array, got #{ slice_getType list }"
slice_len = list.Length()
unless end then end = slice_len
if start > slice_len then start = slice_len
if start < 0 then start = slice_len + start
if end > slice_len then end = slice_len
if end < 0 then end = slice_len + end
slice_isReverse = false
if start > end
slice_isReverse = true
[start, end] = [end, start]
###* @type typeof list ###
slice_listNew = []
slice_n = 0
slice_max = end - start
while slice_n < slice_max
slice_listNew.Push list[start + slice_n]
slice_n++
if slice_isReverse then return slice_reverse slice_listNew
return slice_listNew