|
@@ -64,6 +64,8 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
function RootBrik (brikz, st) {
|
|
|
|
|
|
|
|
|
+ var coreFns = this.coreFns = {};
|
|
|
+
|
|
|
|
|
|
All objects including `ProtoObject` inherit from SmalltalkRoot.
|
|
|
Detached roots (eg. wrapped JS classes like Number or Date)
|
|
@@ -77,25 +79,17 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
function SmalltalkObject () {
|
|
|
}
|
|
|
|
|
|
- inherits(SmalltalkProtoObject, SmalltalkRoot);
|
|
|
- inherits(SmalltalkObject, SmalltalkProtoObject);
|
|
|
+ coreFns.ProtoObject = inherits(SmalltalkProtoObject, SmalltalkRoot);
|
|
|
+ coreFns.Object = inherits(SmalltalkObject, SmalltalkProtoObject);
|
|
|
|
|
|
this.Root = SmalltalkRoot;
|
|
|
this.Object = SmalltalkObject;
|
|
|
-
|
|
|
- this.__init__ = function () {
|
|
|
- var globals = brikz.smalltalkGlobals.globals;
|
|
|
- var addCoupledClass = brikz.classes.addCoupledClass;
|
|
|
- st.addPackage("Kernel-Objects");
|
|
|
- addCoupledClass("ProtoObject", undefined, "Kernel-Objects", SmalltalkProtoObject);
|
|
|
- addCoupledClass("Object", globals.ProtoObject, "Kernel-Objects", SmalltalkObject);
|
|
|
- };
|
|
|
- this.__init__.once = true;
|
|
|
}
|
|
|
|
|
|
OrganizeBrik.deps = ["arraySet", "root"];
|
|
|
function OrganizeBrik (brikz, st) {
|
|
|
var SmalltalkObject = brikz.root.Object;
|
|
|
+ var coreFns = brikz.root.coreFns;
|
|
|
var addElement = brikz.arraySet.addElement;
|
|
|
var removeElement = brikz.arraySet.removeElement;
|
|
|
|
|
@@ -110,19 +104,9 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
this.elements = [];
|
|
|
}
|
|
|
|
|
|
- inherits(SmalltalkOrganizer, SmalltalkObject);
|
|
|
- inherits(SmalltalkPackageOrganizer, SmalltalkOrganizer);
|
|
|
- inherits(SmalltalkClassOrganizer, SmalltalkOrganizer);
|
|
|
-
|
|
|
- this.__init__ = function () {
|
|
|
- var globals = brikz.smalltalkGlobals.globals;
|
|
|
- var addCoupledClass = brikz.classes.addCoupledClass;
|
|
|
- st.addPackage("Kernel-Infrastructure");
|
|
|
- addCoupledClass("Organizer", globals.Object, "Kernel-Infrastructure", SmalltalkOrganizer);
|
|
|
- addCoupledClass("PackageOrganizer", globals.Organizer, "Kernel-Infrastructure", SmalltalkPackageOrganizer);
|
|
|
- addCoupledClass("ClassOrganizer", globals.Organizer, "Kernel-Infrastructure", SmalltalkClassOrganizer);
|
|
|
- };
|
|
|
- this.__init__.once = true;
|
|
|
+ coreFns.Organizer = inherits(SmalltalkOrganizer, SmalltalkObject);
|
|
|
+ coreFns.PackageOrganizer = inherits(SmalltalkPackageOrganizer, SmalltalkOrganizer);
|
|
|
+ coreFns.ClassOrganizer = inherits(SmalltalkClassOrganizer, SmalltalkOrganizer);
|
|
|
|
|
|
this.setupClassOrganization = function (behaviorBody) {
|
|
|
behaviorBody.organization = new SmalltalkClassOrganizer();
|
|
@@ -167,19 +151,12 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
function PackagesBrik (brikz, st) {
|
|
|
var setupPackageOrganization = brikz.organize.setupPackageOrganization;
|
|
|
var SmalltalkObject = brikz.root.Object;
|
|
|
+ var coreFns = brikz.root.coreFns;
|
|
|
|
|
|
function SmalltalkPackage () {
|
|
|
}
|
|
|
|
|
|
- inherits(SmalltalkPackage, SmalltalkObject);
|
|
|
-
|
|
|
- this.__init__ = function () {
|
|
|
- var globals = brikz.smalltalkGlobals.globals;
|
|
|
- var addCoupledClass = brikz.classes.addCoupledClass;
|
|
|
- st.addPackage("Kernel-Infrastructure");
|
|
|
- addCoupledClass("Package", globals.Object, "Kernel-Infrastructure", SmalltalkPackage);
|
|
|
- };
|
|
|
- this.__init__.once = true;
|
|
|
+ coreFns.Package = inherits(SmalltalkPackage, SmalltalkObject);
|
|
|
|
|
|
st.packages = {};
|
|
|
|
|
@@ -220,24 +197,17 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
var removeOrganizationElement = brikz.organize.removeOrganizationElement;
|
|
|
var globals = brikz.smalltalkGlobals.globals;
|
|
|
var SmalltalkObject = brikz.root.Object;
|
|
|
+ var coreFns = brikz.root.coreFns;
|
|
|
var addElement = brikz.arraySet.addElement;
|
|
|
var removeElement = brikz.arraySet.removeElement;
|
|
|
|
|
|
function SmalltalkBehaviorBody () {
|
|
|
}
|
|
|
|
|
|
- inherits(SmalltalkBehaviorBody, SmalltalkObject);
|
|
|
+ coreFns.BehaviorBody = inherits(SmalltalkBehaviorBody, SmalltalkObject);
|
|
|
|
|
|
this.BehaviorBody = SmalltalkBehaviorBody;
|
|
|
|
|
|
- this.__init__ = function () {
|
|
|
- var globals = brikz.smalltalkGlobals.globals;
|
|
|
- var addCoupledClass = brikz.classes.addCoupledClass;
|
|
|
- st.addPackage("Kernel-Classes");
|
|
|
- addCoupledClass("BehaviorBody", globals.Object, "Kernel-Classes", SmalltalkBehaviorBody);
|
|
|
- };
|
|
|
- this.__init__.once = true;
|
|
|
-
|
|
|
|
|
|
|
|
|
var classes = [];
|
|
@@ -307,19 +277,12 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
var addOrganizationElement = brikz.organize.addOrganizationElement;
|
|
|
var registerSelector = brikz.selectors.registerSelector;
|
|
|
var SmalltalkObject = brikz.root.Object;
|
|
|
+ var coreFns = brikz.root.coreFns;
|
|
|
|
|
|
function SmalltalkMethod () {
|
|
|
}
|
|
|
|
|
|
- inherits(SmalltalkMethod, SmalltalkObject);
|
|
|
-
|
|
|
- this.__init__ = function () {
|
|
|
- var globals = brikz.smalltalkGlobals.globals;
|
|
|
- var addCoupledClass = brikz.classes.addCoupledClass;
|
|
|
- st.addPackage("Kernel-Methods");
|
|
|
- addCoupledClass("CompiledMethod", globals.Object, "Kernel-Methods", SmalltalkMethod);
|
|
|
- };
|
|
|
- this.__init__.once = true;
|
|
|
+ coreFns.CompiledMethod = inherits(SmalltalkMethod, SmalltalkObject);
|
|
|
|
|
|
|
|
|
use api.addMethod() */
|
|
@@ -376,8 +339,9 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
- TraitsBrik.deps = ["behaviors"];
|
|
|
+ TraitsBrik.deps = ["behaviors", "root"];
|
|
|
function TraitsBrik (brikz, st) {
|
|
|
+ var coreFns = brikz.root.coreFns;
|
|
|
var SmalltalkBehaviorBody = brikz.behaviors.BehaviorBody;
|
|
|
var setupBehavior = brikz.behaviors.setupBehavior;
|
|
|
var buildBehaviorBody = brikz.behaviors.buildBehaviorBody;
|
|
@@ -385,7 +349,7 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
function SmalltalkTrait () {
|
|
|
}
|
|
|
|
|
|
- inherits(SmalltalkTrait, SmalltalkBehaviorBody);
|
|
|
+ coreFns.Trait = inherits(SmalltalkTrait, SmalltalkBehaviorBody);
|
|
|
|
|
|
SmalltalkTrait.prototype.toString = function () {
|
|
|
return 'Smalltalk Trait ' + this.className;
|
|
@@ -409,14 +373,6 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
if (st._traitMethodRemoved) st._traitMethodRemoved(method, this);
|
|
|
};
|
|
|
|
|
|
- this.__init__ = function () {
|
|
|
- var globals = brikz.smalltalkGlobals.globals;
|
|
|
- var addCoupledClass = brikz.classes.addCoupledClass;
|
|
|
- st.addPackage("Kernel-Classes");
|
|
|
- addCoupledClass("Trait", globals.BehaviorBody, "Kernel-Classes", SmalltalkTrait);
|
|
|
- };
|
|
|
- this.__init__.once = true;
|
|
|
-
|
|
|
function traitBuilder (className) {
|
|
|
return {
|
|
|
className: className,
|
|
@@ -441,9 +397,11 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
- ClassesBrik.deps = ["root", "behaviors", "arraySet"];
|
|
|
+ ClassesBrik.deps = ["root", "behaviors", "arraySet", "smalltalkGlobals"];
|
|
|
function ClassesBrik (brikz, st) {
|
|
|
var SmalltalkRoot = brikz.root.Root;
|
|
|
+ var coreFns = brikz.root.coreFns;
|
|
|
+ var globals = brikz.smalltalkGlobals.globals;
|
|
|
var SmalltalkBehaviorBody = brikz.behaviors.BehaviorBody;
|
|
|
var buildBehaviorBody = brikz.behaviors.buildBehaviorBody;
|
|
|
var setupBehavior = brikz.behaviors.setupBehavior;
|
|
@@ -460,9 +418,9 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
function SmalltalkMetaclass () {
|
|
|
}
|
|
|
|
|
|
- inherits(SmalltalkBehavior, SmalltalkBehaviorBody);
|
|
|
- inherits(SmalltalkClass, SmalltalkBehavior);
|
|
|
- inherits(SmalltalkMetaclass, SmalltalkBehavior);
|
|
|
+ coreFns.Behavior = inherits(SmalltalkBehavior, SmalltalkBehaviorBody);
|
|
|
+ coreFns.Class = inherits(SmalltalkClass, SmalltalkBehavior);
|
|
|
+ coreFns.Metaclass = inherits(SmalltalkMetaclass, SmalltalkBehavior);
|
|
|
|
|
|
|
|
|
|
|
@@ -496,23 +454,14 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
if (st._methodRemoved) st._methodRemoved(method, this);
|
|
|
};
|
|
|
|
|
|
- this.__init__ = function () {
|
|
|
- var globals = brikz.smalltalkGlobals.globals;
|
|
|
- var addCoupledClass = brikz.classes.addCoupledClass;
|
|
|
+ this.bootstrapHierarchy = function () {
|
|
|
var nilSubclasses = [globals.ProtoObject];
|
|
|
- st.addPackage("Kernel-Classes");
|
|
|
- addCoupledClass("Behavior", globals.BehaviorBody, "Kernel-Classes", SmalltalkBehavior);
|
|
|
- addCoupledClass("Metaclass", globals.Behavior, "Kernel-Classes", SmalltalkMetaclass);
|
|
|
- addCoupledClass("Class", globals.Behavior, "Kernel-Classes", SmalltalkClass);
|
|
|
-
|
|
|
-
|
|
|
nilAsClass.klass = globals.Class;
|
|
|
nilSubclasses.forEach(function (each) {
|
|
|
each.klass.superclass = globals.Class;
|
|
|
addSubclass(each.klass);
|
|
|
});
|
|
|
};
|
|
|
- this.__init__.once = true;
|
|
|
|
|
|
|
|
|
created metaclass object. Newly created classes (not their metaclass)
|
|
@@ -571,7 +520,7 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
if (typeof superclass == 'undefined' || superclass && superclass.isNil) {
|
|
|
console.warn('Compiling ' + className + ' as a subclass of `nil`. A dependency might be missing.');
|
|
|
}
|
|
|
- return buildBehaviorBody(pkgName, classBuilder(className, superclass, iVarNames));
|
|
|
+ return buildBehaviorBody(pkgName, classBuilder(className, superclass, iVarNames, coreFns[className]));
|
|
|
};
|
|
|
|
|
|
function classBuilder (className, superclass, iVarNames, fn) {
|
|
@@ -620,13 +569,6 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- and add it to the system.*/
|
|
|
-
|
|
|
- this.addCoupledClass = function (className, superclass, pkgName, fn) {
|
|
|
- return buildBehaviorBody(pkgName, classBuilder(className, superclass, null, fn));
|
|
|
- };
|
|
|
-
|
|
|
function metaSubclasses (metaclass) {
|
|
|
return metaclass.instanceClass.subclasses
|
|
|
.filter(function (each) {
|
|
@@ -668,7 +610,10 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
+ SmalltalkInitBrik.deps = ["classes"];
|
|
|
function SmalltalkInitBrik (brikz, st) {
|
|
|
+ var bootstrapHierarchy = brikz.classes.bootstrapHierarchy;
|
|
|
+
|
|
|
var initialized = false;
|
|
|
var runtimeLoadedPromise = new Promise(function (resolve, reject) {
|
|
|
require(['./kernel-runtime'], resolve, reject);
|
|
@@ -679,6 +624,7 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
st.initialize = function () {
|
|
|
return runtimeLoadedPromise.then(function (configureWithRuntime) {
|
|
|
if (initialized) return;
|
|
|
+ bootstrapHierarchy();
|
|
|
configureWithRuntime(brikz);
|
|
|
initialized = true;
|
|
|
});
|
|
@@ -754,11 +700,12 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
NilBrik.deps = ["root"];
|
|
|
function NilBrik (brikz, st) {
|
|
|
var SmalltalkObject = brikz.root.Object;
|
|
|
+ var coreFns = brikz.root.coreFns;
|
|
|
|
|
|
function SmalltalkNil () {
|
|
|
}
|
|
|
|
|
|
- inherits(SmalltalkNil, SmalltalkObject);
|
|
|
+ coreFns.UndefinedObject = inherits(SmalltalkNil, SmalltalkObject);
|
|
|
|
|
|
this.nilAsReceiver = new SmalltalkNil();
|
|
|
|
|
@@ -771,14 +718,6 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
|
|
|
value: true,
|
|
|
enumerable: false, configurable: false, writable: false
|
|
|
});
|
|
|
-
|
|
|
- this.__init__ = function () {
|
|
|
- var globals = brikz.smalltalkGlobals.globals;
|
|
|
- var addCoupledClass = brikz.classes.addCoupledClass;
|
|
|
- st.addPackage("Kernel-Objects");
|
|
|
- addCoupledClass("UndefinedObject", globals.Object, "Kernel-Objects", SmalltalkNil);
|
|
|
- };
|
|
|
- this.__init__.once = true;
|
|
|
}
|
|
|
|
|
|
|