Comparing version 1.0.2 to 1.1.0
@@ -1,6 +0,6 @@ | ||
module.exports = adhere | ||
function adhere (method, wrapper) { | ||
var adherence | ||
module.exports = function (method, additional, f) { | ||
if (arguments.length == 2) { | ||
f = additional | ||
additional = 0 | ||
} | ||
// Preserving arity costs next to nothing; the call to `execute` in | ||
@@ -10,65 +10,17 @@ // these functions will be inlined. The airty function itself will never | ||
// dear user, but it will be compiled. | ||
switch (method.length) { | ||
case 0: | ||
adherence = function () { | ||
var vargs = new Array | ||
for (var i = 0, I = arguments.length; i < I; i++) { | ||
vargs.push(arguments[i]) | ||
} | ||
wrapper(this, vargs) | ||
} | ||
break | ||
case 1: | ||
adherence = function (one) { | ||
var vargs = new Array | ||
for (var i = 0, I = arguments.length; i < I; i++) { | ||
vargs.push(arguments[i]) | ||
} | ||
wrapper(this, vargs) | ||
} | ||
break | ||
case 2: | ||
adherence = function (one, two) { | ||
var vargs = new Array | ||
for (var i = 0, I = arguments.length; i < I; i++) { | ||
vargs.push(arguments[i]) | ||
} | ||
wrapper(this, vargs) | ||
} | ||
break | ||
case 3: | ||
adherence = function (one, two, three) { | ||
var vargs = new Array | ||
for (var i = 0, I = arguments.length; i < I; i++) { | ||
vargs.push(arguments[i]) | ||
} | ||
wrapper(this, vargs) | ||
} | ||
break | ||
case 4: | ||
adherence = function (one, two, three, four) { | ||
var vargs = new Array | ||
for (var i = 0, I = arguments.length; i < I; i++) { | ||
vargs.push(arguments[i]) | ||
} | ||
wrapper(this, vargs) | ||
} | ||
break | ||
default: | ||
// Avert your eyes if you're squeamish. | ||
// todo: starting to feel like this is all that is needed. | ||
var args = [] | ||
for (var i = 0, I = method.length; i < I; i++) { | ||
args[i] = '_' + i | ||
} | ||
var adherence = (new Function('wrapper', ' \n\ | ||
return function (' + args.join(',') + ') { \n\ | ||
var vargs = new Array \n\ | ||
for (var i = 0, I = arguments.length; i < I; i++) { \n\ | ||
vargs.push(arguments[i]) \n\ | ||
} \n\ | ||
wrapper(this, vargs) \n\ | ||
} \n\ | ||
'))(wrapper) | ||
// Avert your eyes if you're squeamish. | ||
var args = [] | ||
for (var i = 0, I = method.length + additional; i < I; i++) { | ||
args[i] = '_' + i | ||
} | ||
var adherence = (new Function('f', ' \n\ | ||
return function (' + args.join(',') + ') { \n\ | ||
var vargs = new Array \n\ | ||
for (var i = 0, I = arguments.length; i < I; i++) { \n\ | ||
vargs.push(arguments[i]) \n\ | ||
} \n\ | ||
f(this, vargs) \n\ | ||
} \n\ | ||
'))(f) | ||
@@ -75,0 +27,0 @@ adherence.toString = function () { return method.toString() } |
{ | ||
"name": "adhere", | ||
"version": "1.0.2", | ||
"version": "1.1.0", | ||
"description": "Wrap methods preserving arity.", | ||
@@ -5,0 +5,0 @@ "keywords": |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
4209
26