Skip to content

Instantly share code, notes, and snippets.

@jcmoore
Last active December 31, 2015 05:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jcmoore/7942319 to your computer and use it in GitHub Desktop.
Save jcmoore/7942319 to your computer and use it in GitHub Desktop.
closure-based dependency management
var DOHTEM = Function;
var DEBUG = function (flag, context) {
return (flag === true || (context && context.TARGET && context.TARGET.MODE === true));
};
var DATUM = (function ($$) {
var DATUM;
return DATUM = function (method) {
return DOHTEM.prototype.toString.apply(method);
};
}) ({
get DOHTEM () { return DOHTEM; },
});
var DITTO = (function ($$) {
var DITTO;
return DITTO = function () {
var context;
var flag;
var method;
var vars = arguments.length;
method = (vars-- > 0) ? arguments[vars] : null;
flag = (vars-- > 0) ? arguments[vars] : null;
context = (vars-- > 0) ? arguments[vars] : null;
if ($$.DEBUG(flag, context)) { // use a proxy
return $$.DOHTEM ("method", "return function () { return method.apply(this, arguments); };") (method);
}
var src = $$.DATUM(method);
var s = src.indexOf("(") + 1;
var f = src.indexOf(")");
var b = src.indexOf("{") + 1;
var e = src.lastIndexOf("}");
return $$.DOHTEM (src.substr(s, f - s), '"use strict";\n' + src.substr(b, e - b));
};
}) ({
get DEBUG () { return DEBUG; },
get DATUM () { return DATUM; },
get DOHTEM () { return DOHTEM; },
});
var DICE = (function ($$) {
var DICE;
return DICE = function (deps) {
return deps;
return Object.seal(deps);
if (!deps) {
return deps;
}
var config = $$.config;
var result = {};
var keys = Object.keys(deps);
var count = keys.length;
var index;
var field;
for (index = 0; index < count; index++) {
field = keys[index];
config.get = $$.getter(deps, field);
config.set = $$.setter(deps, field);
Object.defineProperty(result, field, config);
}
return result;
};
}) ({
config: {
get: function () {},
set: function () {},
},
getter: function (deps, field) {
return function () {
return deps[field];
};
},
setter: function (deps, field) {
return function (__) {
deps[field] = __;
};
},
});
var DEPS = (function ($$) {
var DEPS;
return DEPS = function () {
var flag;
var deps;
var method;
var vars = arguments.length;
method = (vars-- > 0) ? arguments[vars] : null;
deps = (vars-- > 0) ? arguments[vars] : null;
flag = (vars-- > 0) ? arguments[vars] : null;
var closure = $$.DITTO(this, flag, method);
return closure($$.DICE(deps));
};
}) ({
get DITTO () { return DITTO; },
get DICE () { return DICE; },
});
var DUPE = (function ($$) {
var DUPE;
return DUPE = function () {
var deps;
var closure;
var vars = arguments.length;
closure = (vars-- > 0) ? arguments[vars] : null;
deps = (vars-- > 0) ? arguments[vars] : null;
return closure($$.DICE(deps));
};
}) ({
get DICE () { return DICE; },
})
var DEV = (function ($$) {
var DEV;
return DEV = function (flag) {
var debug = false;
var delegate;
var env = ({
TARGET: { MODE:flag },
get __ () { return $$.DEPS; },
set __ (__) { $$.DEPS = __; },
get DEV () { return $$.DEV; },
set DEV (__) { $$.DEV = __; },
get DUPE () { return $$.DUPE; },
set DUPE (__) { $$.DUPE = __; },
get DEPS () { return delegate; },
set DEPS (__) { delegate = __; },
get DICE () { return $$.DICE; },
set DICE (__) { $$.DICE = __; },
get DITTO () { return $$.DITTO; },
set DITTO (__) { $$.DITTO = __; },
get DEBUG () { return $$.DEBUG; },
set DEBUG (__) { $$.DEBUG = __; },
});
delegate = debug ? $$.DEPS : $$.DUPE({
get DITTO () { return $$.DITTO },
get DICE () { return $$.DICE },
}, $$.DOHTEM ("$$", "return " + $$.DATUM($$.DEPS)));
return env;
};
}) ({
get DEV () { return DEV; },
set DEV (__) { DEV = __; },
get DUPE () { return DUPE; },
set DUPE (__) { DUPE = __; },
get DEPS () { return DEPS; },
set DEPS (__) { DEPS = __; },
get DICE () { return DICE; },
set DICE (__) { DICE = __; },
get DITTO () { return DITTO; },
set DITTO (__) { DITTO = __; },
get DEBUG () { return DEBUG; },
set DEBUG (__) { DEBUG = __; },
get DATUM () { return DATUM; },
get DOHTEM () { return DOHTEM; },
});
var DENV = DEV(true);
var z = 1;
var add = DENV.DEPS({
get z () { return z; },
set z (__) { z = __; },
}, function ($$) {
var add;
return add = function (x, y) {
var __ = $$;
//__.z = -__.z;
return x + y + __.z;
};
});
var f = DENV.DEPS({
get add () { return add; },
}, function ($$) {
var f;
return f = function () {
var __ = $$;
var add = __.add;
var sum = 0;
for (var i = 0; i < 10000; i++) {
sum = add(sum, i);
//sum = __.add(sum, i); // takes 100x as long !!!!!
}
//if (sum != 49995000) throw "argh";
};
});
function measure(f) {
var start = new Date().valueOf();
for (var i = 0; i < 100000; i++) {
f();
}
var end = new Date().valueOf();
if (typeof console !== "undefined") {
console.log(end - start);
} else {
print(end - start);
}
}
measure(f); // (31s on node-webkit, 10s on node, 1.6s on Chrome, 1.7s on d8)
//Inlined z called from add.
//Inlined z called from add.
//Inlined add called from f.
//Inlined z called from add.
//Inlined add called from f.
//Inlined f called from measure.
var DOHTEM = Function;
var DEBUG = function (flag, context) {
return (flag === true || (context && context.TARGET && context.TARGET.MODE === true));
};
var DATUM = (function ($$) {
var DATUM;
return DATUM = function (method) {
return DOHTEM.prototype.toString.apply(method);
};
}) ({
get DOHTEM () { return DOHTEM; },
});
var DITTO = (function ($$) {
var DITTO;
return DITTO = function () {
var context;
var flag;
var method;
var vars = arguments.length;
method = (vars-- > 0) ? arguments[vars] : null;
flag = (vars-- > 0) ? arguments[vars] : null;
context = (vars-- > 0) ? arguments[vars] : null;
if ($$.DEBUG(flag, context)) { // use a proxy
return $$.DOHTEM ("method", "return function () { return method.apply(this, arguments); };") (method);
}
var src = $$.DATUM(method);
var s = src.indexOf("(") + 1;
var f = src.indexOf(")");
var b = src.indexOf("{") + 1;
var e = src.lastIndexOf("}");
return $$.DOHTEM (src.substr(s, f - s), '"use strict";\n' + src.substr(b, e - b));
};
}) ({
get DEBUG () { return DEBUG; },
get DATUM () { return DATUM; },
get DOHTEM () { return DOHTEM; },
});
var DICE = (function ($$) {
var DICE;
return DICE = function (deps) {
return deps;
return Object.seal(deps);
if (!deps) {
return deps;
}
var config = $$.config;
var result = {};
var keys = Object.keys(deps);
var count = keys.length;
var index;
var field;
for (index = 0; index < count; index++) {
field = keys[index];
config.get = $$.getter(deps, field);
config.set = $$.setter(deps, field);
Object.defineProperty(result, field, config);
}
return result;
};
}) ({
config: {
get: function () {},
set: function () {},
},
getter: function (deps, field) {
return function () {
return deps[field];
};
},
setter: function (deps, field) {
return function (__) {
deps[field] = __;
};
},
});
var DEPS = (function ($$) {
var DEPS;
return DEPS = function () {
var flag;
var deps;
var method;
var vars = arguments.length;
method = (vars-- > 0) ? arguments[vars] : null;
deps = (vars-- > 0) ? arguments[vars] : null;
flag = (vars-- > 0) ? arguments[vars] : null;
var closure = $$.DITTO(this, flag, method);
return closure($$.DICE(deps));
};
}) ({
get DITTO () { return DITTO; },
get DICE () { return DICE; },
});
var DUPE = (function ($$) {
var DUPE;
return DUPE = function () {
var deps;
var closure;
var vars = arguments.length;
closure = (vars-- > 0) ? arguments[vars] : null;
deps = (vars-- > 0) ? arguments[vars] : null;
return closure($$.DICE(deps));
};
}) ({
get DICE () { return DICE; },
})
var DEV = (function ($$) {
var DEV;
return DEV = function (flag) {
var debug = false;
var delegate;
var env = ({
TARGET: { MODE:flag },
get __ () { return $$.DEPS; },
set __ (__) { $$.DEPS = __; },
get DEV () { return $$.DEV; },
set DEV (__) { $$.DEV = __; },
get DUPE () { return $$.DUPE; },
set DUPE (__) { $$.DUPE = __; },
get DEPS () { return delegate; },
set DEPS (__) { delegate = __; },
get DICE () { return $$.DICE; },
set DICE (__) { $$.DICE = __; },
get DITTO () { return $$.DITTO; },
set DITTO (__) { $$.DITTO = __; },
get DEBUG () { return $$.DEBUG; },
set DEBUG (__) { $$.DEBUG = __; },
});
delegate = debug ? $$.DEPS : $$.DUPE({
get DITTO () { return $$.DITTO },
get DICE () { return $$.DICE },
}, $$.DOHTEM ("$$", "return " + $$.DATUM($$.DEPS)));
return env;
};
}) ({
get DEV () { return DEV; },
set DEV (__) { DEV = __; },
get DUPE () { return DUPE; },
set DUPE (__) { DUPE = __; },
get DEPS () { return DEPS; },
set DEPS (__) { DEPS = __; },
get DICE () { return DICE; },
set DICE (__) { DICE = __; },
get DITTO () { return DITTO; },
set DITTO (__) { DITTO = __; },
get DEBUG () { return DEBUG; },
set DEBUG (__) { DEBUG = __; },
get DATUM () { return DATUM; },
get DOHTEM () { return DOHTEM; },
});
var DENV = DEV(true);
var z = 1;
var add = DENV.DEPS({
get z () { return z; },
set z (__) { z = __; },
}, function add__ ($$) {
return function add (x, y) {
var __ = $$;
//__.z = -__.z;
return x + y + __.z;
};
});
var f = DENV.DEPS({
get add () { return add; },
}, function f__ ($$) {
return function f () {
var __ = $$;
var add = __.add;
var sum = 0;
for (var i = 0; i < 10000; i++) {
sum = add(sum, i);
//sum = __.add(sum, i); // takes 100x as long !!!!!
}
//if (sum != 49995000) throw "argh";
};
});
function measure(f) {
var start = new Date().valueOf();
for (var i = 0; i < 100000; i++) {
f();
}
var end = new Date().valueOf();
if (typeof console !== "undefined") {
console.log(end - start);
} else {
print(end - start);
}
}
measure(f); // (2.6s on node-webkit, 10s on node, 1.6s on Chrome, 1.7s on d8)
//Inlined z called from add.
//Inlined z called from add.
//Inlined add called from f.
//Inlined z called from add.
//Inlined add called from f.
//Inlined f called from measure.
var DOHTEM = Function;
var DEBUG = function DEBUG (flag, context) {
return (flag === true || (context && context.TARGET && context.TARGET.MODE === true));
};
var DATUM = (function __ ($$) {
return function DATUM (method) {
return DOHTEM.prototype.toString.apply(method);
};
}) ({
get DOHTEM () { return DOHTEM; },
});
var DITTO = (function __ ($$) {
return function DITTO () {
var context;
var flag;
var method;
var vars = arguments.length;
method = (vars-- > 0) ? arguments[vars] : null;
flag = (vars-- > 0) ? arguments[vars] : null;
context = (vars-- > 0) ? arguments[vars] : null;
if ($$.DEBUG(flag, context)) { // use a proxy
return $$.DOHTEM ("method", "return function DELEGATE () { return method.apply(this, arguments); };") (method);
}
var src = $$.DATUM(method);
var s = src.indexOf("(") + 1;
var f = src.indexOf(")");
var b = src.indexOf("{") + 1;
var e = src.lastIndexOf("}");
return $$.DOHTEM (src.substr(s, f - s), '"use strict";\n' + src.substr(b, e - b));
};
}) ({
get DEBUG () { return DEBUG; },
get DATUM () { return DATUM; },
get DOHTEM () { return DOHTEM; },
});
var DICE = (function __ ($$) {
return function DICE (deps) {
return deps;
return Object.seal(deps);
if (!deps) {
return deps;
}
var config = $$.config;
var result = {};
var keys = Object.keys(deps);
var count = keys.length;
var index;
var field;
for (index = 0; index < count; index++) {
field = keys[index];
config.get = $$.getter(deps, field);
config.set = $$.setter(deps, field);
Object.defineProperty(result, field, config);
}
return result;
};
}) ({
config: {
get: function dget () {},
set: function dset () {},
},
getter: function getter (deps, field) {
return function dgetter () {
return deps[field];
};
},
setter: function setter (deps, field) {
return function dsetter (__) {
deps[field] = __;
};
},
});
var DEPS = (function __ ($$) {
return function DEPS () {
var flag;
var deps;
var method;
var vars = arguments.length;
method = (vars-- > 0) ? arguments[vars] : null;
deps = (vars-- > 0) ? arguments[vars] : null;
flag = (vars-- > 0) ? arguments[vars] : null;
var closure = $$.DITTO(this, flag, method);
return closure($$.DICE(deps));
};
}) ({
get DITTO () { return DITTO; },
get DICE () { return DICE; },
});
var DUPE = (function __ ($$) {
return function DUPE () {
var deps;
var closure;
var vars = arguments.length;
closure = (vars-- > 0) ? arguments[vars] : null;
deps = (vars-- > 0) ? arguments[vars] : null;
return closure($$.DICE(deps));
};
}) ({
get DICE () { return DICE; },
})
var DEV = (function __ ($$) {
return function DEV (flag) {
var debug = false;
var delegate;
var env = ({
TARGET: { MODE:flag },
get __ () { return $$.DEPS; },
set __ (__) { $$.DEPS = __; },
get DEV () { return $$.DEV; },
set DEV (__) { $$.DEV = __; },
get DUPE () { return $$.DUPE; },
set DUPE (__) { $$.DUPE = __; },
get DEPS () { return delegate; },
set DEPS (__) { delegate = __; },
get DICE () { return $$.DICE; },
set DICE (__) { $$.DICE = __; },
get DITTO () { return $$.DITTO; },
set DITTO (__) { $$.DITTO = __; },
get DEBUG () { return $$.DEBUG; },
set DEBUG (__) { $$.DEBUG = __; },
});
delegate = debug ? $$.DEPS : $$.DUPE({
get DITTO () { return $$.DITTO },
get DICE () { return $$.DICE },
}, $$.DOHTEM ("$$", "return " + $$.DATUM($$.DEPS)));
return env;
};
}) ({
get DEV () { return DEV; },
set DEV (__) { DEV = __; },
get DUPE () { return DUPE; },
set DUPE (__) { DUPE = __; },
get DEPS () { return DEPS; },
set DEPS (__) { DEPS = __; },
get DICE () { return DICE; },
set DICE (__) { DICE = __; },
get DITTO () { return DITTO; },
set DITTO (__) { DITTO = __; },
get DEBUG () { return DEBUG; },
set DEBUG (__) { DEBUG = __; },
get DATUM () { return DATUM; },
get DOHTEM () { return DOHTEM; },
});
var DENV = DEV(true);
var z = 1;
var add = DENV.DEPS({
get z () { return z; },
set z (__) { z = __; },
}, function __ ($$) {
return function add (x, y) {
var __ = $$;
//__.z = -__.z;
return x + y + __.z;
};
});
var f = DENV.DEPS({
get add () { return add; },
}, function __ ($$) {
return function f () {
var __ = $$;
var add = __.add;
var sum = 0;
for (var i = 0; i < 10000; i++) {
sum = add(sum, i);
//sum = __.add(sum, i); // takes 100x as long !!!!!
}
//if (sum != 49995000) throw "argh";
};
});
function measure(f) {
var start = new Date().valueOf();
for (var i = 0; i < 100000; i++) {
// invoke f() with f_this as "this" -- thus exposing the add() method
f();
}
var end = new Date().valueOf();
if (typeof console !== "undefined") {
console.log(end - start);
} else {
print(end - start);
}
}
measure(f); // (2.6s on node-webkit, 10s on node, 1.6s on Chrome, 1.7s on d8)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment