crystalline
Version:
A modern utility library with a strong emphasis on readability. Make your code crystal clear.
47 lines (46 loc) • 2.48 kB
JavaScript
;
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;