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