Browse Source

Create brikz.js

Herbert Vojčík 10 years ago
parent
commit
c24426432f
1 changed files with 24 additions and 0 deletions
  1. 24 0
      brikz.js

+ 24 - 0
brikz.js

@@ -0,0 +1,24 @@
+function Brikz(api) {
+	var brikz = this, backup = {};
+
+	function mixin(s, t, k) {
+		for (k=k||Object.keys(s), l=k.length, i=0; i<l; ++i) t[k[i]]=s[k[i]];
+		return t;
+	}
+
+	Object.defineProperties(this, {
+		ensure: { value: null,
+			enumerable: false, configurable: true, writable: true},
+		rebuild: { value: function () {
+			var oapi = mixin(api, {}), obrikz = mixin(backup, {});
+			mixin({}, api, Object.keys(api)); backup = {};
+			brikz.ensure = function (key) {
+				var b = brikz[key], bak = [];
+				while (typeof b === "function") b = new b(brikz, api, bak);
+				if (b === bak) { b = obrikz[key]; mixin(oapi, api, bak); }
+				brikz[key] = backup[key] = b;
+			}
+			Object.keys(brikz).forEach(function (key) { brikz.ensure(key); });
+			brikz.ensure = null;
+		}, enumerable: false, configurable: true, writable: false }});
+}