|
@@ -100,18 +100,21 @@ function OrganizeBrik(brikz, st) {
|
|
|
|
|
|
var org = this;
|
|
|
|
|
|
- org.Organizer = function () {};
|
|
|
- inherits(org.Organizer, SmalltalkObject);
|
|
|
-
|
|
|
- org.PackageOrganizer = function () {
|
|
|
+ function SmalltalkOrganizer () {}
|
|
|
+ function SmalltalkPackageOrganizer () {
|
|
|
this.elements = [];
|
|
|
- };
|
|
|
- inherits(org.PackageOrganizer, org.Organizer);
|
|
|
-
|
|
|
- org.ClassOrganizer = function () {
|
|
|
+ }
|
|
|
+ function SmalltalkClassOrganizer () {
|
|
|
this.elements = [];
|
|
|
- };
|
|
|
- inherits(org.ClassOrganizer, org.Organizer);
|
|
|
+ }
|
|
|
+
|
|
|
+ inherits(SmalltalkOrganizer, SmalltalkObject);
|
|
|
+ inherits(SmalltalkPackageOrganizer, SmalltalkOrganizer);
|
|
|
+ inherits(SmalltalkClassOrganizer, SmalltalkOrganizer);
|
|
|
+
|
|
|
+ org.Organizer = SmalltalkOrganizer;
|
|
|
+ org.PackageOrganizer = SmalltalkPackageOrganizer;
|
|
|
+ org.ClassOrganizer = SmalltalkClassOrganizer;
|
|
|
|
|
|
org.setupClassOrganization = function (klass) {
|
|
|
klass.organization = new org.ClassOrganizer;
|
|
@@ -133,10 +136,11 @@ function OrganizeBrik(brikz, st) {
|
|
|
|
|
|
function DNUBrik(brikz, st) {
|
|
|
|
|
|
- /* Method not implemented handlers */
|
|
|
-
|
|
|
brikz.ensure("selectorConversion");
|
|
|
brikz.ensure("messageSend");
|
|
|
+ var manip = brikz.ensure("manipulation");
|
|
|
+
|
|
|
+ /* Method not implemented handlers */
|
|
|
|
|
|
this.methods = [];
|
|
|
this.selectors = [];
|
|
@@ -163,6 +167,13 @@ function DNUBrik(brikz, st) {
|
|
|
|
|
|
return handler;
|
|
|
}
|
|
|
+
|
|
|
+ this.installHandlers = function (klass) {
|
|
|
+ var m = this.methods;
|
|
|
+ for(var i=0; i<m.length; i++) {
|
|
|
+ manip.installMethodIfAbsent(m[i], klass);
|
|
|
+ }
|
|
|
+ };
|
|
|
}
|
|
|
|
|
|
function ClassInitBrik(brikz, st) {
|
|
@@ -189,7 +200,7 @@ function ClassInitBrik(brikz, st) {
|
|
|
}
|
|
|
|
|
|
if(klass === st.Object || klass.wrapped) {
|
|
|
- installDnuHandlers(klass);
|
|
|
+ dnu.installHandlers(klass);
|
|
|
}
|
|
|
};
|
|
|
|
|
@@ -224,13 +235,6 @@ function ClassInitBrik(brikz, st) {
|
|
|
manip.installMethod(method, klass);
|
|
|
klass.inheritedMethods[method.selector] = true;
|
|
|
}
|
|
|
-
|
|
|
- function installDnuHandlers(klass) {
|
|
|
- var m = dnu.methods;
|
|
|
- for(var i=0; i<m.length; i++) {
|
|
|
- manip.installMethodIfAbsent(m[i], klass);
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
function ManipulationBrik(brikz, st) {
|
|
@@ -498,10 +502,11 @@ function MethodsBrik(brikz, st) {
|
|
|
|
|
|
var manip = brikz.ensure("manipulation");
|
|
|
var org = brikz.ensure("organize");
|
|
|
- var instance = brikz.ensure("instance");
|
|
|
+ var stInit = brikz.ensure("stInit");
|
|
|
var dnu = brikz.ensure("dnu");
|
|
|
brikz.ensure("selectorConversion");
|
|
|
brikz.ensure("augments");
|
|
|
+ brikz.ensure("classes");
|
|
|
|
|
|
function SmalltalkMethod() {}
|
|
|
inherits(SmalltalkMethod, SmalltalkObject);
|
|
@@ -566,7 +571,7 @@ function MethodsBrik(brikz, st) {
|
|
|
// re-initialize all subclasses to ensure the new method
|
|
|
// propagation (for wrapped classes, not using the prototype
|
|
|
// chain.
|
|
|
- if(instance.initialized()) {
|
|
|
+ if(stInit.initialized()) {
|
|
|
st.allSubclasses(klass).forEach(function(subclass) {
|
|
|
st.initClass(subclass);
|
|
|
});
|
|
@@ -574,7 +579,7 @@ function MethodsBrik(brikz, st) {
|
|
|
|
|
|
for(var i=0; i<method.messageSends.length; i++) {
|
|
|
var dnuHandler = dnu.get(method.messageSends[i]);
|
|
|
- if(instance.initialized()) {
|
|
|
+ if(stInit.initialized()) {
|
|
|
installNewDnuHandler(dnuHandler);
|
|
|
}
|
|
|
}
|
|
@@ -627,9 +632,10 @@ function AugmentsBrik(brikz, st) {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
-function InstanceBrik(brikz, st) {
|
|
|
+function SmalltalkInitBrik(brikz, st) {
|
|
|
|
|
|
brikz.ensure("classInit");
|
|
|
+ brikz.ensure("classes");
|
|
|
|
|
|
var initialized = false;
|
|
|
|
|
@@ -652,29 +658,6 @@ function InstanceBrik(brikz, st) {
|
|
|
return initialized;
|
|
|
};
|
|
|
|
|
|
- /* List of all reserved words in JavaScript. They may not be used as variables
|
|
|
- in Smalltalk. */
|
|
|
-
|
|
|
- // list of reserved JavaScript keywords as of
|
|
|
- // http://es5.github.com/#x7.6.1.1
|
|
|
- // and
|
|
|
- // http://people.mozilla.org/~jorendorff/es6-draft.html#sec-7.6.1
|
|
|
- st.reservedWords = ['break', 'case', 'catch', 'continue', 'debugger',
|
|
|
- 'default', 'delete', 'do', 'else', 'finally', 'for', 'function',
|
|
|
- 'if', 'in', 'instanceof', 'new', 'return', 'switch', 'this', 'throw',
|
|
|
- 'try', 'typeof', 'var', 'void', 'while', 'with',
|
|
|
- // ES5: future use: http://es5.github.com/#x7.6.1.2
|
|
|
- 'class', 'const', 'enum', 'export', 'extends', 'import', 'super',
|
|
|
- // ES5: future use in strict mode
|
|
|
- 'implements', 'interface', 'let', 'package', 'private', 'protected',
|
|
|
- 'public', 'static', 'yield'];
|
|
|
-
|
|
|
- st.globalJsVariables = ['jQuery', 'window', 'document', 'process', 'global'];
|
|
|
-
|
|
|
- if(this.jQuery) {
|
|
|
- this.jQuery.allowJavaScriptCalls = true;
|
|
|
- }
|
|
|
-
|
|
|
}
|
|
|
|
|
|
function PrimitivesBrik(brikz, st) {
|
|
@@ -719,6 +702,25 @@ function PrimitivesBrik(brikz, st) {
|
|
|
/* Backward compatibility with Amber 0.9.1 */
|
|
|
st.symbolFor = function(aString) { return aString; };
|
|
|
|
|
|
+ /* List of all reserved words in JavaScript. They may not be used as variables
|
|
|
+ in Smalltalk. */
|
|
|
+
|
|
|
+ // list of reserved JavaScript keywords as of
|
|
|
+ // http://es5.github.com/#x7.6.1.1
|
|
|
+ // and
|
|
|
+ // http://people.mozilla.org/~jorendorff/es6-draft.html#sec-7.6.1
|
|
|
+ st.reservedWords = ['break', 'case', 'catch', 'continue', 'debugger',
|
|
|
+ 'default', 'delete', 'do', 'else', 'finally', 'for', 'function',
|
|
|
+ 'if', 'in', 'instanceof', 'new', 'return', 'switch', 'this', 'throw',
|
|
|
+ 'try', 'typeof', 'var', 'void', 'while', 'with',
|
|
|
+ // ES5: future use: http://es5.github.com/#x7.6.1.2
|
|
|
+ 'class', 'const', 'enum', 'export', 'extends', 'import', 'super',
|
|
|
+ // ES5: future use in strict mode
|
|
|
+ 'implements', 'interface', 'let', 'package', 'private', 'protected',
|
|
|
+ 'public', 'static', 'yield'];
|
|
|
+
|
|
|
+ st.globalJsVariables = ['jQuery', 'window', 'document', 'process', 'global'];
|
|
|
+
|
|
|
}
|
|
|
|
|
|
function RuntimeBrik(brikz, st) {
|
|
@@ -917,6 +919,10 @@ function MessageSendBrik(brikz, st) {
|
|
|
return st.send(st.JSObjectProxy._on_(receiver), selector, args);
|
|
|
}
|
|
|
|
|
|
+ if(this.jQuery) {
|
|
|
+ this.jQuery.allowJavaScriptCalls = true;
|
|
|
+ }
|
|
|
+
|
|
|
this.messageNotUnderstood = messageNotUnderstood;
|
|
|
}
|
|
|
|
|
@@ -1033,9 +1039,10 @@ brikz.classInit = ClassInitBrik;
|
|
|
brikz.manipulation = ManipulationBrik;
|
|
|
brikz.classes = ClassesBrik;
|
|
|
brikz.methods = MethodsBrik;
|
|
|
-brikz.instance = InstanceBrik;
|
|
|
+brikz.stInit = SmalltalkInitBrik;
|
|
|
brikz.augments = AugmentsBrik;
|
|
|
brikz.bootstrap = BootstrapBrik;
|
|
|
+
|
|
|
brikz.rebuild();
|
|
|
|
|
|
global_smalltalk = api;
|