You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					29 lines
				
				852 B
			
		
		
			
		
	
	
					29 lines
				
				852 B
			| 
								 
											3 years ago
										 
									 | 
							
								define(['./restArguments', './isFunction', './map', './_deepGet', './_toPath'], function (restArguments, isFunction, map, _deepGet, _toPath) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // Invoke a method (with arguments) on every item in a collection.
							 | 
						||
| 
								 | 
							
								  var invoke = restArguments(function(obj, path, args) {
							 | 
						||
| 
								 | 
							
								    var contextPath, func;
							 | 
						||
| 
								 | 
							
								    if (isFunction(path)) {
							 | 
						||
| 
								 | 
							
								      func = path;
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      path = _toPath(path);
							 | 
						||
| 
								 | 
							
								      contextPath = path.slice(0, -1);
							 | 
						||
| 
								 | 
							
								      path = path[path.length - 1];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return map(obj, function(context) {
							 | 
						||
| 
								 | 
							
								      var method = func;
							 | 
						||
| 
								 | 
							
								      if (!method) {
							 | 
						||
| 
								 | 
							
								        if (contextPath && contextPath.length) {
							 | 
						||
| 
								 | 
							
								          context = _deepGet(context, contextPath);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        if (context == null) return void 0;
							 | 
						||
| 
								 | 
							
								        method = context[path];
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      return method == null ? method : method.apply(context, args);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return invoke;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								});
							 |