brikz.js 825 B

123456789101112131415161718192021222324
  1. function Brikz(api) {
  2. var brikz = this, backup = {};
  3. function mixin(s, t, k) {
  4. for (k=k||Object.keys(s), l=k.length, i=0; i<l; ++i) t[k[i]]=s[k[i]];
  5. return t;
  6. }
  7. Object.defineProperties(this, {
  8. ensure: { value: null,
  9. enumerable: false, configurable: true, writable: true},
  10. rebuild: { value: function () {
  11. var oapi = mixin(api, {}), obrikz = mixin(backup, {});
  12. mixin({}, api, Object.keys(api)); backup = {};
  13. brikz.ensure = function (key) {
  14. var b = brikz[key], bak = [];
  15. while (typeof b === "function") b = new b(brikz, api, bak);
  16. if (b === bak) { b = obrikz[key]; mixin(oapi, api, bak); }
  17. brikz[key] = backup[key] = b;
  18. }
  19. Object.keys(brikz).forEach(function (key) { brikz.ensure(key); });
  20. brikz.ensure = null;
  21. }, enumerable: false, configurable: true, writable: false }});
  22. }