Middleman.js
A small library that lets you inject some code between a third party library and the execution
context. With Middleman.js you can easily:
- filter arguments passed to an original method,
- pass one function's arguments to another function, or
- overload a third party method to change how it works
Links
Example
Let's say you add a third party library to your application that has a method called doSomethingCool
.
var ThirdPartyLibrary = {
doSomethingCool : function(firstParam, isAwesome) {
if (isAwesome){
console.log('All up in your app, doing awesome things.');
}
};
};
You decide that you want to force the second parameter isAwesome
to be true
every time
doSomethingCool
is called because your application is totally awesome. You could just write a
wrapper method like this:
var AwesomeApplication = {
doSomethingCool : function(firstParam) {
return ThirdPartyLibrary.doSomethingCool(firstParam, true);
}
};
AwesomeApplication.doSomethingCool('blah blah blah');
However, now you have to remember to call your method instead of the original method.
What if ThirdPartyLibrary
is very popular (e.g. jQuery)? Your colleague Tony has been using
ThirdPartyLibrary
for years. He doesn't remember to use your wrapper function when writing new
code for your application.
Middlman.js gets between Tony and ThirdPartyLibrary
, so your application stays awesome. :expressionless:
var MM = new Middleman();
MM.map({
lib : ThirdPartyLibrary,
method : 'doSomethingCool',
filter : function(args) {
args[1] = true;
return args;
}
});
ThirdPartyLibrary.doSomethingCool("I'm Tony, and the second param is undefined.");
Piece of cake.