|  | var baseToString = require('./_baseToString'), | 
|  | castSlice = require('./_castSlice'), | 
|  | charsEndIndex = require('./_charsEndIndex'), | 
|  | charsStartIndex = require('./_charsStartIndex'), | 
|  | stringToArray = require('./_stringToArray'), | 
|  | toString = require('./toString'); | 
|  |  | 
|  | /** Used to match leading and trailing whitespace. */ | 
|  | var reTrim = /^\s+|\s+$/g; | 
|  |  | 
|  | /** | 
|  | * Removes leading and trailing whitespace or specified characters from `string`. | 
|  | * | 
|  | * @static | 
|  | * @memberOf _ | 
|  | * @since 3.0.0 | 
|  | * @category String | 
|  | * @param {string} [string=''] The string to trim. | 
|  | * @param {string} [chars=whitespace] The characters to trim. | 
|  | * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. | 
|  | * @returns {string} Returns the trimmed string. | 
|  | * @example | 
|  | * | 
|  | * _.trim('  abc  '); | 
|  | * // => 'abc' | 
|  | * | 
|  | * _.trim('-_-abc-_-', '_-'); | 
|  | * // => 'abc' | 
|  | * | 
|  | * _.map(['  foo  ', '  bar  '], _.trim); | 
|  | * // => ['foo', 'bar'] | 
|  | */ | 
|  | function trim(string, chars, guard) { | 
|  | string = toString(string); | 
|  | if (string && (guard || chars === undefined)) { | 
|  | return string.replace(reTrim, ''); | 
|  | } | 
|  | if (!string || !(chars = baseToString(chars))) { | 
|  | return string; | 
|  | } | 
|  | var strSymbols = stringToArray(string), | 
|  | chrSymbols = stringToArray(chars), | 
|  | start = charsStartIndex(strSymbols, chrSymbols), | 
|  | end = charsEndIndex(strSymbols, chrSymbols) + 1; | 
|  |  | 
|  | return castSlice(strSymbols, start, end).join(''); | 
|  | } | 
|  |  | 
|  | module.exports = trim; |