|
@@ -57,6 +57,35 @@ var global_smalltalk, global_nil, global__st;
|
|
|
|
|
|
(function () {
|
|
|
|
|
|
+/* Reconfigurable micro composition system, https://github.com/herby/brikz */
|
|
|
+
|
|
|
+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 }});
|
|
|
+}
|
|
|
+
|
|
|
+/* Brikz end */
|
|
|
+
|
|
|
/* Array extensions */
|
|
|
|
|
|
Array.prototype.addElement = function(el) {
|
|
@@ -115,9 +144,9 @@ inherits(SmalltalkClassOrganizer, SmalltalkOrganizer);
|
|
|
|
|
|
var nil = global_nil = new SmalltalkNil();
|
|
|
|
|
|
-function Smalltalk() {
|
|
|
+function SmalltalkFactory(brikz, st) {
|
|
|
|
|
|
- var st = this;
|
|
|
+// var st = this;
|
|
|
|
|
|
/* This is the current call context object. While it is publicly available,
|
|
|
Use smalltalk.getThisContext() instead which will answer a safe copy of
|
|
@@ -797,6 +826,7 @@ function Smalltalk() {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
+function Smalltalk() {}
|
|
|
inherits(Smalltalk, SmalltalkObject);
|
|
|
|
|
|
if(this.jQuery) {
|
|
@@ -817,7 +847,13 @@ SmalltalkMethodContext.prototype.lookupClass = null;
|
|
|
|
|
|
inherits(SmalltalkMethodContext, SmalltalkObject);
|
|
|
|
|
|
-var smalltalk = global_smalltalk = new Smalltalk();
|
|
|
+var api = new Smalltalk;
|
|
|
+var brikz = new Brikz(api);
|
|
|
+
|
|
|
+brikz.smalltalk = SmalltalkFactory;
|
|
|
+brikz.rebuild();
|
|
|
+
|
|
|
+var smalltalk = global_smalltalk = api;
|
|
|
|
|
|
SmalltalkMethodContext.prototype.fill = function(receiver, selector, locals, lookupClass) {
|
|
|
this.receiver = receiver;
|