UNPKG

crystalline

Version:

A modern utility library with a strong emphasis on readability. Make your code crystal clear.

47 lines (46 loc) 2.48 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.from = void 0; var take_1 = __importDefault(require("ramda/src/take")); var takeLast_1 = __importDefault(require("ramda/src/takeLast")); var takeWhile_1 = __importDefault(require("ramda/src/takeWhile")); var takeLastWhile_1 = __importDefault(require("ramda/src/takeLastWhile")); var head_1 = __importDefault(require("ramda/src/head")); var drop_1 = __importDefault(require("ramda/src/drop")); var dropLast_1 = __importDefault(require("ramda/src/dropLast")); var dropLastWhile_1 = __importDefault(require("ramda/src/dropLastWhile")); var dropRepeats_1 = __importDefault(require("ramda/src/dropRepeats")); var dropRepeatsWith_1 = __importDefault(require("ramda/src/dropRepeatsWith")); var last_1 = __importDefault(require("ramda/src/last")); // @ts-ignore var dropWhile_1 = __importDefault(require("ramda/src/dropWhile")); var from = function (arr) { return ({ pickQuantity: function (quantity) { return ({ fromTheStart: function () { return take_1.default(quantity, arr); }, fromTheEnd: function () { return takeLast_1.default(quantity, arr); }, }); }, pickWhile: function (predicate) { return ({ fromTheStart: function () { return takeWhile_1.default(predicate, arr); }, fromTheEnd: function () { return takeLastWhile_1.default(predicate, arr); }, }); }, pickFirst: function () { return head_1.default(arr); }, pickLast: function () { return last_1.default(arr); }, dropFirst: function () { return from(arr).dropQuantity(1).fromTheStart(); }, dropLast: function () { return from(arr).dropQuantity(1).fromTheEnd(); }, dropQuantity: function (quantity) { return ({ fromTheStart: function () { return drop_1.default(quantity, arr); }, fromTheEnd: function () { return dropLast_1.default(quantity, arr); }, }); }, dropWhile: function (predicate) { return ({ fromTheStart: function () { return dropWhile_1.default(predicate, arr); }, fromTheEnd: function () { return dropLastWhile_1.default(predicate, arr); }, }); }, dropConsecutiveRepeats: function () { return dropRepeats_1.default(arr); }, dropConsecutiveRepeatsSatisfying: function (predicate) { return dropRepeatsWith_1.default(predicate, arr); }, }); }; exports.from = from;