UNPKG

@thi.ng/transducers

Version:

Collection of ~170 lightweight, composable transducers, reducers, generators, iterators for functional data transformations

22 lines (21 loc) 647 B
import { ensureArray } from "@thi.ng/arrays/ensure-array"; import { illegalArgs } from "@thi.ng/errors/illegal-arguments"; import { inRange } from "@thi.ng/math/interval"; function* wrapSides(src, numLeft = 1, numRight = numLeft) { const _src = ensureArray(src); !(inRange(numLeft, 0, _src.length) && inRange(numRight, 0, _src.length)) && illegalArgs(`allowed wrap range: [0..${_src.length}]`); if (numLeft > 0) { for (let m = _src.length, i = m - numLeft; i < m; i++) { yield _src[i]; } } yield* _src; if (numRight > 0) { for (let i = 0; i < numRight; i++) { yield _src[i]; } } } export { wrapSides };