munkey
var µ = require("munkey");
var original = {
add: function (x, y) {
return x + y;
}
};
console.log(original.add(1.3, 1.4));
var floorArgs = µ(original).before("add", function (x, y) {
return [Math.floor(x), Math.floor(y)];
});
console.log(floorArgs.add(1.3, 1.4));
var roundResult = µ(original).after("add", function (result) {
return Math.round(result);
});
console.log(roundResult.add(1.3, 1.4));
var subtract = µ(original).insteadOf("add", function (x, y) {
return x - y;
});
console.log(subtract.add(1, 1));
var tracer = µ(original).intercept("add", function interceptor (method, original, args, self) {
var result = original.apply(self, args);
console.log("'add' was called from", method.caller.name);
console.log("arguments: (", args[0], ",", args[1], ")");
return result;
});
(function main () {
console.log(tracer.add(1, 2));
}());