Skip to content

Instantly share code, notes, and snippets.

@arian
Created May 1, 2011 11:01
Show Gist options
  • Save arian/950419 to your computer and use it in GitHub Desktop.
Save arian/950419 to your computer and use it in GitHub Desktop.
MooTools.define / MooTools.export
(function(){
var global = typeof exports == 'undefined' ? window : exports,
old = {};
var provide = MooTools.provide = function(key, value){
old[key] = global[key];
global[key] = value;
return value;
};
MooTools.provides = function(fn){
var provides = {};
fn.call(provides);
for (var i in provides) provide(i, provides[i]);
return provides;
};
MooTools.export = function(export){
if (!export) export = {};
for (var key in old){
export[key] = global[key];
global[key] = old[key];
}
return export;
};
})();
// Usage
(function(){
var typeOf = MooTools.provide('typeOf', function(value){
return 'array'; // jk
});
})();
// or
MooTools.provides(function(){
this.Type = function(){
console.log('gotcha');
};
});
console.log(typeOf('string'));
var myLib = {};
MooTools.export(myLib);
console.log(typeOf('string'));
console.log(myLib.typeOf('string'));
// In NodeJS
var moo = require('mootools');
new moo.Class();
moo.MooTools.export(global);
new Class();
@ibolmo
Copy link

ibolmo commented Jun 3, 2011

I like. It's similar taste to: https://gist.github.com/980804#gistcomment-31549

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment