time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

split.js (1550B)


      1 var baseToString = require('./_baseToString'),
      2     castSlice = require('./_castSlice'),
      3     hasUnicode = require('./_hasUnicode'),
      4     isIterateeCall = require('./_isIterateeCall'),
      5     isRegExp = require('./isRegExp'),
      6     stringToArray = require('./_stringToArray'),
      7     toString = require('./toString');
      8 
      9 /** Used as references for the maximum length and index of an array. */
     10 var MAX_ARRAY_LENGTH = 4294967295;
     11 
     12 /**
     13  * Splits `string` by `separator`.
     14  *
     15  * **Note:** This method is based on
     16  * [`String#split`](https://mdn.io/String/split).
     17  *
     18  * @static
     19  * @memberOf _
     20  * @since 4.0.0
     21  * @category String
     22  * @param {string} [string=''] The string to split.
     23  * @param {RegExp|string} separator The separator pattern to split by.
     24  * @param {number} [limit] The length to truncate results to.
     25  * @returns {Array} Returns the string segments.
     26  * @example
     27  *
     28  * _.split('a-b-c', '-', 2);
     29  * // => ['a', 'b']
     30  */
     31 function split(string, separator, limit) {
     32   if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {
     33     separator = limit = undefined;
     34   }
     35   limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
     36   if (!limit) {
     37     return [];
     38   }
     39   string = toString(string);
     40   if (string && (
     41         typeof separator == 'string' ||
     42         (separator != null && !isRegExp(separator))
     43       )) {
     44     separator = baseToString(separator);
     45     if (!separator && hasUnicode(string)) {
     46       return castSlice(stringToArray(string), 0, limit);
     47     }
     48   }
     49   return string.split(separator, limit);
     50 }
     51 
     52 module.exports = split;