diff options
Diffstat (limited to 'node_modules/lodash/wrapperAt.js')
-rw-r--r-- | node_modules/lodash/wrapperAt.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/node_modules/lodash/wrapperAt.js b/node_modules/lodash/wrapperAt.js new file mode 100644 index 0000000..6f6a1d0 --- /dev/null +++ b/node_modules/lodash/wrapperAt.js @@ -0,0 +1,48 @@ +var LazyWrapper = require('./_LazyWrapper'), + LodashWrapper = require('./_LodashWrapper'), + baseAt = require('./_baseAt'), + flatRest = require('./_flatRest'), + isIndex = require('./_isIndex'), + thru = require('./thru'); + +/** + * This method is the wrapper version of `_.at`. + * + * @name at + * @memberOf _ + * @since 1.0.0 + * @category Seq + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _(object).at(['a[0].b.c', 'a[1]']).value(); + * // => [3, 4] + */ +var wrapperAt = flatRest(function(paths) { + var length = paths.length, + start = length ? paths[0] : 0, + value = this.__wrapped__, + interceptor = function(object) { return baseAt(object, paths); }; + + if (length > 1 || this.__actions__.length || + !(value instanceof LazyWrapper) || !isIndex(start)) { + return this.thru(interceptor); + } + value = value.slice(start, +start + (length ? 1 : 0)); + value.__actions__.push({ + 'func': thru, + 'args': [interceptor], + 'thisArg': undefined + }); + return new LodashWrapper(value, this.__chain__).thru(function(array) { + if (length && !array.length) { + array.push(undefined); + } + return array; + }); +}); + +module.exports = wrapperAt; |