| 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;
 |