summaryrefslogtreecommitdiff
path: root/lib/async.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/async.js')
-rwxr-xr-xlib/async.js32
1 files changed, 20 insertions, 12 deletions
diff --git a/lib/async.js b/lib/async.js
index e38c901..dbdb090 100755
--- a/lib/async.js
+++ b/lib/async.js
@@ -608,36 +608,44 @@
});
};
- var _argsRegEx = /^function\s*[^\(]*\(\s*([^\)]*)\)/m;
- var _diArgs = function(func) {
- var result = func.toString().match(_argsRegEx)[1].split(',');
- for (var i = 0, e = result.length; i != e; ++i)
+ var _funcParamRegEx = /^function\s*[^\(]*\(\s*([^\)]*)\)/m;
+ var _funcParamNames = function(func) {
+ var result = func.toString().match(_funcParamRegEx)[1].split(',');
+
+ for (var i = 0, e = result.length; i != e; ++i) {
result[i] = result[i].trim();
+ }
+
return result;
};
async.autoInject = function(tasks, callback) {
var injTasks = {};
- for (var i in tasks)
+ for (var i in tasks) {
injTasks[i] = (function(val) {
- if (!(val instanceof Function))
+ if (!(val instanceof Function)) {
return val;
+ }
- var args = _diArgs(val);
- if (args.length < 2)
+ var params = _funcParamNames(val);
+ if (params.length < 2) {
return val;
+ }
- args.shift();
+ params.pop();
- return args.concat(function(cb, results) {
- val.apply(null, [cb].concat(_map(args, function(a) { return results[a]; })));
+ return params.concat(function(cb, results) {
+ val.apply(null, _map(params, function(a) { return results[a]; }).concat(cb));
});
+
+ return params;
})(tasks[i]);
+ }
return this.auto(
injTasks,
callback && function(err, results) {
- callback.apply(null, [err].concat(_map(_diArgs(callback).slice(1), function(a) { return results[a]; })));
+ callback.apply(null, [err].concat(_map(_funcParamNames(callback).slice(1), function(a) { return results[a]; })));
}
);
};