UNPKG

foop

Version:

interfaces that describe their intentions.

70 lines (64 loc) 7.16 kB
var isArray = require('../is/array') var isUndefined = require('../is/undefined') var isString = require('../is/string') var from = require('../util/from') var arraySlice = require('../native/arraySlice') var curry = require('../fp/curry') var preferExistingMethod = require('../fp/preferExistingMethod') var stringSlice = String.prototype.slice /** * Returns the elements of the given list or string (or object with a `slice` * method) from `fromIndex` (inclusive) to `toIndex` (exclusive). * Dispatches to the `slice` method of the third argument, if present. * @memberOf array * @memberOf string * @memberOf fp * @since 5.0.0-beta.6 * * @param {*} list array | string to slice on * @param {Number} fromIndex The start index (inclusive). * @param {Number} toIndex The end index (exclusive). * @return {*} * * @tests fp/slice * @curried 3 * @see fp/preferExistingMethod * * @func * @fork v0.1.4 * @category List * @sig Number -> Number -> [a] -> [a] * @sig Number -> Number -> String -> String * * {@link https://github.com/lodash/lodash/blob/master/slice.js lodash-slice} * {@link https://github.com/lodash/lodash/blob/master/.internal/castSlice.js lodash-cast-slice} * {@link https://github.com/lodash/lodash/commit/e5e8f35c066c71a04ba584f65acc017d032c0174 lodash-commit-remove-base-slice} * {@link https://github.com/jashkenas/underscore/blob/master/underscore.js#L1650 underscore-slice} * {@link https://github.com/ramda/ramda/blob/master/src/slice.js} * @see {@link ramda-slice} * @see {@link underscore-slice} * @see {@link lodash-commit-remove-base-slice} * @see {@link lodash-cast-slice} * @see {@link lodash-slice} * * @example * * slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c'] * slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd'] * slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c'] * slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c'] * slice(0, 3, 'ramda'); //=> 'ram' * */ function slice(list, fromIndex, toIndex) { var to = isUndefined(toIndex) ? list.length : toIndex if (isString(list)) { return stringSlice.call(list, fromIndex, to) } // let array = isArray(list) ? list : from(list) var array = list return arraySlice.call(array, fromIndex, to) } // @TODO put in flipped // module.exports = curry(3, preferExistingMethod('slice', slice)) // module.exports = curry(3, slice) //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2UuanMiLCJzb3VyY2VzIjpbInNsaWNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pcy9hcnJheScpXG5jb25zdCBpc1VuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2lzL3VuZGVmaW5lZCcpXG5jb25zdCBpc1N0cmluZyA9IHJlcXVpcmUoJy4uL2lzL3N0cmluZycpXG5jb25zdCBmcm9tID0gcmVxdWlyZSgnLi4vdXRpbC9mcm9tJylcbmNvbnN0IGFycmF5U2xpY2UgPSByZXF1aXJlKCcuLi9uYXRpdmUvYXJyYXlTbGljZScpXG5jb25zdCBjdXJyeSA9IHJlcXVpcmUoJy4uL2ZwL2N1cnJ5JylcbmNvbnN0IHByZWZlckV4aXN0aW5nTWV0aG9kID0gcmVxdWlyZSgnLi4vZnAvcHJlZmVyRXhpc3RpbmdNZXRob2QnKVxuXG5jb25zdCBzdHJpbmdTbGljZSA9IFN0cmluZy5wcm90b3R5cGUuc2xpY2VcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gbGlzdCBvciBzdHJpbmcgKG9yIG9iamVjdCB3aXRoIGEgYHNsaWNlYFxuICogbWV0aG9kKSBmcm9tIGBmcm9tSW5kZXhgIChpbmNsdXNpdmUpIHRvIGB0b0luZGV4YCAoZXhjbHVzaXZlKS5cbiAqIERpc3BhdGNoZXMgdG8gdGhlIGBzbGljZWAgbWV0aG9kIG9mIHRoZSB0aGlyZCBhcmd1bWVudCwgaWYgcHJlc2VudC5cbiAqIEBtZW1iZXJPZiBhcnJheVxuICogQG1lbWJlck9mIHN0cmluZ1xuICogQG1lbWJlck9mIGZwXG4gKiBAc2luY2UgNS4wLjAtYmV0YS42XG4gKlxuICogQHBhcmFtIHsqfSBsaXN0IGFycmF5IHwgc3RyaW5nIHRvIHNsaWNlIG9uXG4gKiBAcGFyYW0ge051bWJlcn0gZnJvbUluZGV4IFRoZSBzdGFydCBpbmRleCAoaW5jbHVzaXZlKS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB0b0luZGV4IFRoZSBlbmQgaW5kZXggKGV4Y2x1c2l2ZSkuXG4gKiBAcmV0dXJuIHsqfVxuICpcbiAqIEB0ZXN0cyBmcC9zbGljZVxuICogQGN1cnJpZWQgM1xuICogQHNlZSBmcC9wcmVmZXJFeGlzdGluZ01ldGhvZFxuICpcbiAqIEBmdW5jXG4gKiBAZm9yayB2MC4xLjRcbiAqIEBjYXRlZ29yeSBMaXN0XG4gKiBAc2lnIE51bWJlciAtPiBOdW1iZXIgLT4gW2FdIC0+IFthXVxuICogQHNpZyBOdW1iZXIgLT4gTnVtYmVyIC0+IFN0cmluZyAtPiBTdHJpbmdcbiAqXG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvYmxvYi9tYXN0ZXIvc2xpY2UuanMgbG9kYXNoLXNsaWNlfVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvbWFzdGVyLy5pbnRlcm5hbC9jYXN0U2xpY2UuanMgbG9kYXNoLWNhc3Qtc2xpY2V9XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvY29tbWl0L2U1ZThmMzVjMDY2YzcxYTA0YmE1ODRmNjVhY2MwMTdkMDMyYzAxNzQgbG9kYXNoLWNvbW1pdC1yZW1vdmUtYmFzZS1zbGljZX1cbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvYmxvYi9tYXN0ZXIvdW5kZXJzY29yZS5qcyNMMTY1MCB1bmRlcnNjb3JlLXNsaWNlfVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9yYW1kYS9yYW1kYS9ibG9iL21hc3Rlci9zcmMvc2xpY2UuanN9XG4gKiBAc2VlIHtAbGluayByYW1kYS1zbGljZX1cbiAqIEBzZWUge0BsaW5rIHVuZGVyc2NvcmUtc2xpY2V9XG4gKiBAc2VlIHtAbGluayBsb2Rhc2gtY29tbWl0LXJlbW92ZS1iYXNlLXNsaWNlfVxuICogQHNlZSB7QGxpbmsgbG9kYXNoLWNhc3Qtc2xpY2V9XG4gKiBAc2VlIHtAbGluayBsb2Rhc2gtc2xpY2V9XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIHNsaWNlKDEsIDMsIFsnYScsICdiJywgJ2MnLCAnZCddKTsgICAgICAgIC8vPT4gWydiJywgJ2MnXVxuICogICAgICBzbGljZSgxLCBJbmZpbml0eSwgWydhJywgJ2InLCAnYycsICdkJ10pOyAvLz0+IFsnYicsICdjJywgJ2QnXVxuICogICAgICBzbGljZSgwLCAtMSwgWydhJywgJ2InLCAnYycsICdkJ10pOyAgICAgICAvLz0+IFsnYScsICdiJywgJ2MnXVxuICogICAgICBzbGljZSgtMywgLTEsIFsnYScsICdiJywgJ2MnLCAnZCddKTsgICAgICAvLz0+IFsnYicsICdjJ11cbiAqICAgICAgc2xpY2UoMCwgMywgJ3JhbWRhJyk7ICAgICAgICAgICAgICAgICAgICAgLy89PiAncmFtJ1xuICpcbiAqL1xuZnVuY3Rpb24gc2xpY2UobGlzdCwgZnJvbUluZGV4LCB0b0luZGV4KSB7XG4gIGNvbnN0IHRvID0gaXNVbmRlZmluZWQodG9JbmRleCkgPyBsaXN0Lmxlbmd0aCA6IHRvSW5kZXhcbiAgaWYgKGlzU3RyaW5nKGxpc3QpKSByZXR1cm4gc3RyaW5nU2xpY2UuY2FsbChsaXN0LCBmcm9tSW5kZXgsIHRvKVxuXG4gIC8vIGxldCBhcnJheSA9IGlzQXJyYXkobGlzdCkgPyBsaXN0IDogZnJvbShsaXN0KVxuICBsZXQgYXJyYXkgPSBsaXN0XG4gIHJldHVybiBhcnJheVNsaWNlLmNhbGwoYXJyYXksIGZyb21JbmRleCwgdG8pXG59XG5cbi8vIEBUT0RPIHB1dCBpbiBmbGlwcGVkXG4vL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGN1cnJ5KDMsIHByZWZlckV4aXN0aW5nTWV0aG9kKCdzbGljZScsIHNsaWNlKSlcbi8vIG1vZHVsZS5leHBvcnRzID0gY3VycnkoMywgc2xpY2UpXG4iXSwibmFtZXMiOlsiY29uc3QiLCJsZXQiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdENBLEdBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0FBQzlDQSxHQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7QUFDeENBLEdBQUssQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztBQUNwQ0EsR0FBSyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUM7QUFDbERBLEdBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUNwQ0EsR0FBSyxDQUFDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQzs7QUFFbEVBLEdBQUssQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBOEMxQyxTQUFTLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRTtFQUN2Q0EsR0FBSyxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBQ3ZELElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUEsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUE7OztFQUdoRUMsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJO0VBQ2hCLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQztDQUM3Qzs7Ozs7QUFLRCxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDOzsifQ==