2016-07-30 17:00:12 +02:00
|
|
|
var namespace = (function () {
|
|
|
|
|
|
|
|
var _ = require('third/underscore/underscore.js');
|
|
|
|
var exports = {};
|
|
|
|
|
|
|
|
var dependencies = [];
|
2016-07-30 19:34:51 +02:00
|
|
|
var requires = [];
|
2016-07-30 17:00:12 +02:00
|
|
|
var old_builtins = {};
|
|
|
|
|
|
|
|
exports.set_global = function (name, val) {
|
|
|
|
global[name] = val;
|
|
|
|
dependencies.push(name);
|
|
|
|
return val;
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.patch_builtin = function (name, val) {
|
|
|
|
old_builtins[name] = global[name];
|
|
|
|
global[name] = val;
|
|
|
|
return val;
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.add_dependencies = function (dct) {
|
|
|
|
_.each(dct, function (fn, name) {
|
|
|
|
var obj = require(fn);
|
2016-07-30 19:34:51 +02:00
|
|
|
requires.push(fn);
|
2016-07-30 17:00:12 +02:00
|
|
|
set_global(name, obj);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.restore = function () {
|
|
|
|
dependencies.forEach(function (name) {
|
|
|
|
delete global[name];
|
|
|
|
});
|
2016-07-30 19:34:51 +02:00
|
|
|
requires.forEach(function (fn) {
|
|
|
|
delete require.cache[require.resolve(fn)];
|
|
|
|
});
|
2016-07-30 17:00:12 +02:00
|
|
|
dependencies = [];
|
|
|
|
_.extend(global, old_builtins);
|
|
|
|
old_builtins = {};
|
|
|
|
};
|
|
|
|
|
|
|
|
return exports;
|
|
|
|
}());
|
|
|
|
module.exports = namespace;
|
|
|
|
|