UNPKG

foop

Version:

interfaces that describe their intentions.

64 lines (58 loc) 5.53 kB
var ENV_PERF = require('../env/preferPerf') var FROZEN_ARRAY = require('../native/EMPTY_ARRAY') var MAX_ARRAY_LENGTH = require('../native/MAX_ARRAY_LENGTH') var stringToArray = require('../cast/stringToArray') var castSlice = require('../fp/slice') var isString = require('../is/stringPrimitive') var isRegExp = require('../is/regexp') var isUndefined = require('../is/undefined') var isNill = require('../is/nullOrUndefined') var hasUnicode = require('./hasUnicode') /** * Splits `string` by `separator`. * @symb 🤸 * * @NOTE This method is based on * [`String#split`](https://mdn.io/String/split). * * @curried 2 * @since 4.0.0 * @category String * * * @param {string} [string=''] The string to split. * @param {RegExp|string} separator The separator pattern to split by. * @param {number} [limitArg] The length to truncate results to. * @return {Array} Returns the string segments. * * @see http://speakingjs.com/es5/ch24.html * * @example * * split('a-b-c', '-', 2) * //=> ['a', 'b'] * */ function split(string, separator, limitArg) { var limit = isUndefined(limitArg) ? MAX_ARRAY_LENGTH : limitArg >>> 0 // @TODO EMPTY_ARRAY? if (!limit) { return ENV_PERF ? FROZEN_ARRAY : [] } // split the unicode string into an array, then slice it if (string && // isString, or nill && !regexp ( isString(separator) || (isNill(separator) && !isRegExp(separator)) ) ) { if (!separator && hasUnicode(string)) { return castSlice(stringToArray(string), 0, limit) } } // normal... return string.split(separator, limit) } module.exports = split //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQuanMiLCJzb3VyY2VzIjpbInNwbGl0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEVOVl9QRVJGID0gcmVxdWlyZSgnLi4vZW52L3ByZWZlclBlcmYnKVxuY29uc3QgRlJPWkVOX0FSUkFZID0gcmVxdWlyZSgnLi4vbmF0aXZlL0VNUFRZX0FSUkFZJylcbmNvbnN0IE1BWF9BUlJBWV9MRU5HVEggPSByZXF1aXJlKCcuLi9uYXRpdmUvTUFYX0FSUkFZX0xFTkdUSCcpXG5jb25zdCBzdHJpbmdUb0FycmF5ID0gcmVxdWlyZSgnLi4vY2FzdC9zdHJpbmdUb0FycmF5JylcbmNvbnN0IGNhc3RTbGljZSA9IHJlcXVpcmUoJy4uL2ZwL3NsaWNlJylcbmNvbnN0IGlzU3RyaW5nID0gcmVxdWlyZSgnLi4vaXMvc3RyaW5nUHJpbWl0aXZlJylcbmNvbnN0IGlzUmVnRXhwID0gcmVxdWlyZSgnLi4vaXMvcmVnZXhwJylcbmNvbnN0IGlzVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaXMvdW5kZWZpbmVkJylcbmNvbnN0IGlzTmlsbCA9IHJlcXVpcmUoJy4uL2lzL251bGxPclVuZGVmaW5lZCcpXG5jb25zdCBoYXNVbmljb2RlID0gcmVxdWlyZSgnLi9oYXNVbmljb2RlJylcblxuLyoqXG4gKiBTcGxpdHMgYHN0cmluZ2AgYnkgYHNlcGFyYXRvcmAuXG4gKiBAc3ltYiDwn6S4XG4gKlxuICogQE5PVEUgVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAqIFtgU3RyaW5nI3NwbGl0YF0oaHR0cHM6Ly9tZG4uaW8vU3RyaW5nL3NwbGl0KS5cbiAqXG4gKiBAY3VycmllZCAyXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBTdHJpbmdcbiAqXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gc3BsaXQuXG4gKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IHNlcGFyYXRvciBUaGUgc2VwYXJhdG9yIHBhdHRlcm4gdG8gc3BsaXQgYnkuXG4gKiBAcGFyYW0ge251bWJlcn0gW2xpbWl0QXJnXSBUaGUgbGVuZ3RoIHRvIHRydW5jYXRlIHJlc3VsdHMgdG8uXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyB0aGUgc3RyaW5nIHNlZ21lbnRzLlxuICpcbiAqIEBzZWUgaHR0cDovL3NwZWFraW5nanMuY29tL2VzNS9jaDI0Lmh0bWxcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgc3BsaXQoJ2EtYi1jJywgJy0nLCAyKVxuICogICAvLz0+IFsnYScsICdiJ11cbiAqXG4gKi9cbmZ1bmN0aW9uIHNwbGl0KHN0cmluZywgc2VwYXJhdG9yLCBsaW1pdEFyZykge1xuICBjb25zdCBsaW1pdCA9IGlzVW5kZWZpbmVkKGxpbWl0QXJnKSA/IE1BWF9BUlJBWV9MRU5HVEggOiBsaW1pdEFyZyA+Pj4gMFxuXG4gIC8vIEBUT0RPIEVNUFRZX0FSUkFZP1xuICBpZiAoIWxpbWl0KSB7XG4gICAgcmV0dXJuIEVOVl9QRVJGID8gRlJPWkVOX0FSUkFZIDogW11cbiAgfVxuXG4gIC8vIHNwbGl0IHRoZSB1bmljb2RlIHN0cmluZyBpbnRvIGFuIGFycmF5LCB0aGVuIHNsaWNlIGl0XG4gIGlmIChzdHJpbmcgJiZcbiAgICAvLyBpc1N0cmluZywgb3IgbmlsbCAmJiAhcmVnZXhwXG4gICAgKFxuICAgICAgaXNTdHJpbmcoc2VwYXJhdG9yKSB8fFxuICAgICAgKGlzTmlsbChzZXBhcmF0b3IpICYmICFpc1JlZ0V4cChzZXBhcmF0b3IpKVxuICAgIClcbiAgKSB7XG4gICAgaWYgKCFzZXBhcmF0b3IgJiYgaGFzVW5pY29kZShzdHJpbmcpKSB7XG4gICAgICByZXR1cm4gY2FzdFNsaWNlKHN0cmluZ1RvQXJyYXkoc3RyaW5nKSwgMCwgbGltaXQpXG4gICAgfVxuICB9XG5cbiAgLy8gbm9ybWFsLi4uXG4gIHJldHVybiBzdHJpbmcuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzcGxpdFxuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUM7QUFDN0NBLEdBQUssQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDO0FBQ3JEQSxHQUFLLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLDRCQUE0QixDQUFDO0FBQzlEQSxHQUFLLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztBQUN0REEsR0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3hDQSxHQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztBQUNqREEsR0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO0FBQ3hDQSxHQUFLLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUM5Q0EsR0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsdUJBQXVCLENBQUM7QUFDL0NBLEdBQUssQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkIxQyxTQUFTLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRTtFQUMxQ0EsR0FBSyxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsZ0JBQWdCLEdBQUcsUUFBUSxLQUFLLENBQUM7OztFQUd2RSxJQUFJLENBQUMsS0FBSyxFQUFFO0lBQ1YsT0FBTyxRQUFRLEdBQUcsWUFBWSxHQUFHLEVBQUU7R0FDcEM7OztFQUdELElBQUksTUFBTTs7SUFFUjtNQUNFLFFBQVEsQ0FBQyxTQUFTLENBQUM7TUFDbkIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDNUM7SUFDRDtJQUNBLElBQUksQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO01BQ3BDLE9BQU8sU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDO0tBQ2xEO0dBQ0Y7OztFQUdELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO0NBQ3RDOztBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSzsifQ==