|
@@ -111,6 +111,8 @@ function RootBrik(brikz, st) {
|
|
|
|
|
|
this.nil = new SmalltalkNil();
|
|
|
|
|
|
+ this.rootAsClass = {fn: SmalltalkRoot};
|
|
|
+
|
|
|
this.__init__ = function () {
|
|
|
st.addPackage("Kernel-Objects");
|
|
|
st.addPackage("Kernel-Infrastructure");
|
|
@@ -166,6 +168,7 @@ function DNUBrik(brikz, st) {
|
|
|
brikz.ensure("selectorConversion");
|
|
|
brikz.ensure("messageSend");
|
|
|
var manip = brikz.ensure("manipulation");
|
|
|
+ var rootAsClass = brikz.ensure("root").rootAsClass;
|
|
|
|
|
|
/* Method not implemented handlers */
|
|
|
|
|
@@ -182,7 +185,7 @@ function DNUBrik(brikz, st) {
|
|
|
checker[selector] = true;
|
|
|
var method = {jsSelector: selector, fn: createHandler(selector)};
|
|
|
methods.push(method);
|
|
|
- manip.installMethod(method, {fn: SmalltalkRoot});
|
|
|
+ manip.installMethod(method, rootAsClass);
|
|
|
return method;
|
|
|
};
|
|
|
|
|
@@ -296,7 +299,10 @@ function ManipulationBrik(brikz, st) {
|
|
|
function ClassesBrik(brikz, st) {
|
|
|
|
|
|
var org = brikz.ensure("organize");
|
|
|
- var nil = brikz.ensure("root").nil;
|
|
|
+ var root = brikz.ensure("root");
|
|
|
+ var nil = root.nil;
|
|
|
+ var rootAsClass = root.rootAsClass;
|
|
|
+ rootAsClass.klass = {fn: SmalltalkClass};
|
|
|
|
|
|
function SmalltalkPackage() {}
|
|
|
function SmalltalkBehavior() {}
|
|
@@ -310,15 +316,13 @@ function ClassesBrik(brikz, st) {
|
|
|
|
|
|
SmalltalkMetaclass.prototype.meta = true;
|
|
|
|
|
|
- var nilKlass;
|
|
|
-
|
|
|
this.__init__ = function () {
|
|
|
st.addPackage("Kernel-Classes");
|
|
|
st.wrapClassName("Behavior", "Kernel-Classes", SmalltalkBehavior, st.Object, false);
|
|
|
st.wrapClassName("Metaclass", "Kernel-Classes", SmalltalkMetaclass, st.Behavior, false);
|
|
|
st.wrapClassName("Class", "Kernel-Classes", SmalltalkClass, st.Behavior, false);
|
|
|
|
|
|
- st.Object.klass.superclass = nilKlass = st.Class;
|
|
|
+ st.Object.klass.superclass = rootAsClass.klass = st.Class;
|
|
|
addSubclass(st.Object.klass);
|
|
|
|
|
|
st.wrapClassName("Package", "Kernel-Infrastructure", SmalltalkPackage, st.Object, false);
|
|
@@ -350,14 +354,17 @@ function ClassesBrik(brikz, st) {
|
|
|
|
|
|
function klass(spec) {
|
|
|
spec = spec || {};
|
|
|
+ var setSuperClass = spec.superclass;
|
|
|
+ if(!spec.superclass) {
|
|
|
+ spec.superclass = rootAsClass;
|
|
|
+ }
|
|
|
+
|
|
|
var meta = metaclass(spec);
|
|
|
var that = meta.instanceClass;
|
|
|
|
|
|
- if(spec.superclass) {
|
|
|
- that.superclass = spec.superclass;
|
|
|
- }
|
|
|
+ that.superclass = setSuperClass;
|
|
|
|
|
|
- that.fn = spec.fn || inherits(function () {}, spec.superclass ? spec.superclass.fn : SmalltalkRoot);
|
|
|
+ that.fn = spec.fn || inherits(function () {}, spec.superclass.fn);
|
|
|
that.subclasses = [];
|
|
|
|
|
|
setupClass(that, spec);
|
|
@@ -365,14 +372,14 @@ function ClassesBrik(brikz, st) {
|
|
|
that.className = spec.className;
|
|
|
that.wrapped = spec.wrapped || false;
|
|
|
meta.className = spec.className + ' class';
|
|
|
- meta.superclass = spec.superclass ? spec.superclass.klass : nilKlass;
|
|
|
+ meta.superclass = spec.superclass.klass;
|
|
|
return that;
|
|
|
}
|
|
|
|
|
|
function metaclass(spec) {
|
|
|
spec = spec || {};
|
|
|
var that = new SmalltalkMetaclass();
|
|
|
- that.fn = inherits(function () {}, spec.superclass ? spec.superclass.klass.fn : SmalltalkClass);
|
|
|
+ that.fn = inherits(function () {}, spec.superclass.klass.fn);
|
|
|
that.instanceClass = new that.fn();
|
|
|
setupClass(that);
|
|
|
return that;
|