|  | var baseToString = require('./_baseToString'), | 
|  | castSlice = require('./_castSlice'), | 
|  | hasUnicode = require('./_hasUnicode'), | 
|  | isIterateeCall = require('./_isIterateeCall'), | 
|  | isRegExp = require('./isRegExp'), | 
|  | stringToArray = require('./_stringToArray'), | 
|  | toString = require('./toString'); | 
|  |  | 
|  | /** Used as references for the maximum length and index of an array. */ | 
|  | var MAX_ARRAY_LENGTH = 4294967295; | 
|  |  | 
|  | /** | 
|  | * Splits `string` by `separator`. | 
|  | * | 
|  | * **Note:** This method is based on | 
|  | * [`String#split`](https://mdn.io/String/split). | 
|  | * | 
|  | * @static | 
|  | * @memberOf _ | 
|  | * @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} [limit] The length to truncate results to. | 
|  | * @returns {Array} Returns the string segments. | 
|  | * @example | 
|  | * | 
|  | * _.split('a-b-c', '-', 2); | 
|  | * // => ['a', 'b'] | 
|  | */ | 
|  | function split(string, separator, limit) { | 
|  | if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { | 
|  | separator = limit = undefined; | 
|  | } | 
|  | limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; | 
|  | if (!limit) { | 
|  | return []; | 
|  | } | 
|  | string = toString(string); | 
|  | if (string && ( | 
|  | typeof separator == 'string' || | 
|  | (separator != null && !isRegExp(separator)) | 
|  | )) { | 
|  | separator = baseToString(separator); | 
|  | if (!separator && hasUnicode(string)) { | 
|  | return castSlice(stringToArray(string), 0, limit); | 
|  | } | 
|  | } | 
|  | return string.split(separator, limit); | 
|  | } | 
|  |  | 
|  | module.exports = split; |