toPath.js
 1  var arrayMap = require('./_arrayMap'),
 2      copyArray = require('./_copyArray'),
 3      isArray = require('./isArray'),
 4      isSymbol = require('./isSymbol'),
 5      stringToPath = require('./_stringToPath'),
 6      toKey = require('./_toKey'),
 7      toString = require('./toString');
 8  
 9  /**
10   * Converts `value` to a property path array.
11   *
12   * @static
13   * @memberOf _
14   * @since 4.0.0
15   * @category Util
16   * @param {*} value The value to convert.
17   * @returns {Array} Returns the new property path array.
18   * @example
19   *
20   * _.toPath('a.b.c');
21   * // => ['a', 'b', 'c']
22   *
23   * _.toPath('a[0].b.c');
24   * // => ['a', '0', 'b', 'c']
25   */
26  function toPath(value) {
27    if (isArray(value)) {
28      return arrayMap(value, toKey);
29    }
30    return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
31  }
32  
33  module.exports = toPath;