UNPKG

iterama

Version:

Composable functional (async) iterable helpers

52 lines (37 loc) 1.03 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.skip = void 0; var _circularr = _interopRequireDefault(require("circularr")); var _iterate = require("./iterate"); const skipFirst = n => iterable => ({ *[Symbol.iterator]() { const iterator = (0, _iterate.iterate)(iterable); let i = 0; while (i < n && !iterator.next().done) { i++; } for (const value of iterator) { yield value; } } }); const skipLast = n => iterable => ({ *[Symbol.iterator]() { const iterator = (0, _iterate.iterate)(iterable); const last = new _circularr.default(n); for (let i = 0; i < n; i++) { const result = iterator.next(); if (result.done) { break; } last.shift(result.value); } for (const value of iterator) { yield last.shift(value); } } }); const skip = n => n < 0 ? skipLast(-n) : skipFirst(n); exports.skip = skip;