123456789101112131415161718192021222324252627282930313233343536373839404142 |
- function Brikz(api, apiKey, initKey) {
- var brikz = this, backup = {};
- apiKey = apiKey || 'exports';
- initKey = initKey || '__init__';
- function mixin(src, target, keys) {
- for (keys = keys || Object.keys(src), l=keys.length, i=0; i<l; ++i) {
- var value = src[keys[i]];
- if (typeof value !== "undefined") target[keys[i]] = value;
- }
- return target;
- }
- function forEach(c, fn) {
- Object.keys(c).forEach(function(k) { if (c[k]) fn(c[k], k, c); });
- }
- Object.defineProperties(this, {
- ensure: { value: null,
- enumerable: false, configurable: true, writable: true},
- rebuild: { value: function() {
- var obrikz = mixin(backup, {});
- forEach(obrikz, function(brik) {
- mixin({}, api, brik[apiKey] || Object.keys(brik));
- });
- var oapi = mixin(api, {});
- backup = {};
- brikz.ensure = function(key) {
- var b = brikz[key], bak = obrikz[key];
- mixin({}, api, Object.keys(api));
- while (typeof b === "function") b = new b(brikz, api, bak);
- if (b && !b[apiKey]) b[apiKey] = mixin(api, {});
- return brikz[key] = backup[key] = b;
- }
- forEach(brikz, function(brik, key) { brikz.ensure(key); });
- brikz.ensure = null;
- mixin({}, api, Object.keys(api));
- mixin(oapi, api);
- forEach(brikz, function(brik) { mixin(brik[apiKey] || {}, api); });
- forEach(brikz, function(brik) {brik[initKey] && brik[initKey]();});
- }, enumerable: false, configurable: true, writable: false }});
- }
|