|
@@ -417,12 +417,16 @@ function ClassesBrik(brikz, st) {
|
|
|
A Package is lazily created if it does not exist with given name. */
|
|
|
|
|
|
st.addClass = function(className, superclass, iVarNames, pkgName) {
|
|
|
- var pkg = st.addPackage(pkgName);
|
|
|
if (superclass == nil) { superclass = null; }
|
|
|
+ rawAddClass(pkgName, className, superclass, iVarNames, false, null);
|
|
|
+ };
|
|
|
+
|
|
|
+ function rawAddClass(pkgName, className, superclass, iVarNames, wrapped, fn) {
|
|
|
+ var pkg = st.addPackage(pkgName);
|
|
|
if(st[className] && st[className].superclass == superclass) {
|
|
|
- st[className].superclass = superclass;
|
|
|
- st[className].iVarNames = iVarNames;
|
|
|
- st[className].pkg = pkg || st[className].pkg;
|
|
|
+// st[className].superclass = superclass;
|
|
|
+ st[className].iVarNames = iVarNames || [];
|
|
|
+ if (pkg) st[className].pkg = pkg;
|
|
|
} else {
|
|
|
if(st[className]) {
|
|
|
st.removeClass(st[className]);
|
|
@@ -431,13 +435,15 @@ function ClassesBrik(brikz, st) {
|
|
|
className: className,
|
|
|
superclass: superclass,
|
|
|
pkg: pkg,
|
|
|
- iVarNames: iVarNames
|
|
|
+ iVarNames: iVarNames,
|
|
|
+ fn: fn,
|
|
|
+ wrapped: wrapped
|
|
|
});
|
|
|
}
|
|
|
|
|
|
classes.addElement(st[className]);
|
|
|
org.addOrganizationElement(pkg, st[className]);
|
|
|
- };
|
|
|
+ }
|
|
|
|
|
|
st.removeClass = function(klass) {
|
|
|
org.removeOrganizationElement(klass.pkg, klass);
|
|
@@ -449,23 +455,11 @@ function ClassesBrik(brikz, st) {
|
|
|
global smalltalk object. Package is lazily created if it does not exist with given name. */
|
|
|
|
|
|
st.wrapClassName = function(className, pkgName, fn, superclass, wrapped) {
|
|
|
- if(wrapped !== false) {
|
|
|
- wrapped = true;
|
|
|
- }
|
|
|
- var pkg = st.addPackage(pkgName);
|
|
|
- st[className] = klass({
|
|
|
- className: className,
|
|
|
- superclass: superclass,
|
|
|
- pkg: pkg,
|
|
|
- fn: fn,
|
|
|
- wrapped: wrapped
|
|
|
- });
|
|
|
-
|
|
|
- classes.addElement(st[className]);
|
|
|
+ wrapped = wrapped !== false;
|
|
|
+ rawAddClass(pkgName, className, superclass, null, wrapped, fn);
|
|
|
if(wrapped) {
|
|
|
wrappedClasses.addElement(st[className]);
|
|
|
}
|
|
|
- org.addOrganizationElement(pkg, st[className]);
|
|
|
};
|
|
|
|
|
|
/* Create an alias for an existing class */
|
|
@@ -679,6 +673,8 @@ function SmalltalkInitBrik(brikz, st) {
|
|
|
st.initialize = function() {
|
|
|
if(initialized) { return; }
|
|
|
|
|
|
+ runnable();
|
|
|
+
|
|
|
st.classes().forEach(function(klass) {
|
|
|
st.init(klass);
|
|
|
});
|
|
@@ -713,6 +709,18 @@ function SmalltalkInitBrik(brikz, st) {
|
|
|
|
|
|
st.alias(st.Array, "OrderedCollection");
|
|
|
st.alias(st.Date, "Time");
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Answer the smalltalk representation of o.
|
|
|
+ * Used in message sends
|
|
|
+ */
|
|
|
+
|
|
|
+ st._st = function (o) {
|
|
|
+ if(o == null) {return nil;}
|
|
|
+ if(o.klass) {return o;}
|
|
|
+ return st.JSObjectProxy._on_(o);
|
|
|
+ };
|
|
|
+
|
|
|
};
|
|
|
}
|
|
|
|
|
@@ -897,17 +905,6 @@ function RuntimeBrik(brikz, st) {
|
|
|
st.thisContext = context.homeContext;
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- * Answer the smalltalk representation of o.
|
|
|
- * Used in message sends
|
|
|
- */
|
|
|
-
|
|
|
- this._st = function (o) {
|
|
|
- if(o == null) {return nil;}
|
|
|
- if(o.klass) {return o;}
|
|
|
- return st.JSObjectProxy._on_(o);
|
|
|
- };
|
|
|
-
|
|
|
}
|
|
|
|
|
|
function MessageSendBrik(brikz, st) {
|
|
@@ -1044,13 +1041,12 @@ function SelectorConversionBrik(brikz, st) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+/* Making smalltalk that can load */
|
|
|
+
|
|
|
brikz.root = RootBrik;
|
|
|
brikz.dnu = DNUBrik;
|
|
|
-brikz.messageSend = MessageSendBrik;
|
|
|
brikz.organize = OrganizeBrik;
|
|
|
brikz.selectorConversion = SelectorConversionBrik;
|
|
|
-brikz.runtime = RuntimeBrik;
|
|
|
-brikz.primitives = PrimitivesBrik;
|
|
|
brikz.classInit = ClassInitBrik;
|
|
|
brikz.manipulation = ManipulationBrik;
|
|
|
brikz.classes = ClassesBrik;
|
|
@@ -1060,8 +1056,19 @@ brikz.augments = AugmentsBrik;
|
|
|
|
|
|
brikz.rebuild();
|
|
|
|
|
|
+/* Making smalltalk that can run */
|
|
|
+
|
|
|
+function runnable () {
|
|
|
+ brikz.messageSend = MessageSendBrik;
|
|
|
+ brikz.runtime = RuntimeBrik;
|
|
|
+ brikz.primitives = PrimitivesBrik;
|
|
|
+
|
|
|
+ brikz.rebuild();
|
|
|
+};
|
|
|
+
|
|
|
global_smalltalk = api;
|
|
|
global_nil = nil;
|
|
|
-global__st = brikz.runtime._st;
|
|
|
+global__st = api._st;
|
|
|
+api._st = null;
|
|
|
|
|
|
})();
|