Browse Source

Merged with Göran

Nicolas Petton 13 years ago
parent
commit
bfbf695770
17 changed files with 1444 additions and 1068 deletions
  1. 11 11
      js/Canvas.deploy.js
  2. 19 19
      js/Canvas.js
  3. 0 11
      js/Compiler.deploy.js
  4. 2 18
      js/Compiler.js
  5. 2 2
      js/Examples.js
  6. 279 247
      js/IDE.deploy.js
  7. 366 320
      js/IDE.js
  8. 80 80
      js/JQuery.deploy.js
  9. 128 128
      js/JQuery.js
  10. 123 32
      js/Kernel.deploy.js
  11. 209 78
      js/Kernel.js
  12. 33 33
      js/SUnit.deploy.js
  13. 51 51
      js/SUnit.js
  14. 57 12
      js/boot.js
  15. 0 0
      st/Compiler.st
  16. 20 5
      st/IDE.st
  17. 64 21
      st/Kernel.st

+ 11 - 11
js/Canvas.deploy.js

@@ -541,6 +541,17 @@ return self;}
 }),
 }),
 smalltalk.TagBrush);
 smalltalk.TagBrush);
 
 
+smalltalk.addMethod(
+'_empty',
+smalltalk.method({
+selector: 'empty',
+fn: function (){
+var self=this;
+smalltalk.send(smalltalk.send(self, "_asJQuery", []), "_empty", []);
+return self;}
+}),
+smalltalk.TagBrush);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_at_put_',
 '_at_put_',
 smalltalk.method({
 smalltalk.method({
@@ -807,17 +818,6 @@ return self;}
 }),
 }),
 smalltalk.TagBrush);
 smalltalk.TagBrush);
 
 
-smalltalk.addMethod(
-'_empty',
-smalltalk.method({
-selector: 'empty',
-fn: function (){
-var self=this;
-smalltalk.send(smalltalk.send(self, "_asJQuery", []), "_empty", []);
-return self;}
-}),
-smalltalk.TagBrush);
-
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_fromString_canvas_',
 '_fromString_canvas_',

+ 19 - 19
js/Canvas.js

@@ -60,7 +60,7 @@ return self;},
 args: [],
 args: [],
 source: unescape('initialize%0A%20%20%20%20super%20initialize.%0A%20%20%20%20root%20ifNil%3A%20%5Broot%20%3A%3D%20TagBrush%20fromString%3A%20%27div%27%20canvas%3A%20self%5D'),
 source: unescape('initialize%0A%20%20%20%20super%20initialize.%0A%20%20%20%20root%20ifNil%3A%20%5Broot%20%3A%3D%20TagBrush%20fromString%3A%20%27div%27%20canvas%3A%20self%5D'),
 messageSends: ["initialize", "ifNil:", "fromString:canvas:"],
 messageSends: ["initialize", "ifNil:", "fromString:canvas:"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: []
 }),
 }),
 smalltalk.HTMLCanvas);
 smalltalk.HTMLCanvas);
 
 
@@ -76,7 +76,7 @@ return self;},
 args: ["aJQuery"],
 args: ["aJQuery"],
 source: unescape('initializeFromJQuery%3A%20aJQuery%0A%20%20%20%20root%20%3A%3D%20TagBrush%20fromJQuery%3A%20aJQuery%20canvas%3A%20self'),
 source: unescape('initializeFromJQuery%3A%20aJQuery%0A%20%20%20%20root%20%3A%3D%20TagBrush%20fromJQuery%3A%20aJQuery%20canvas%3A%20self'),
 messageSends: ["fromJQuery:canvas:"],
 messageSends: ["fromJQuery:canvas:"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: []
 }),
 }),
 smalltalk.HTMLCanvas);
 smalltalk.HTMLCanvas);
 
 
@@ -92,7 +92,7 @@ return self;},
 args: ["aString"],
 args: ["aString"],
 source: unescape('newTag%3A%20aString%0A%20%20%20%20%5ETagBrush%20fromString%3A%20aString%20canvas%3A%20self'),
 source: unescape('newTag%3A%20aString%0A%20%20%20%20%5ETagBrush%20fromString%3A%20aString%20canvas%3A%20self'),
 messageSends: ["fromString:canvas:"],
 messageSends: ["fromString:canvas:"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: []
 }),
 }),
 smalltalk.HTMLCanvas);
 smalltalk.HTMLCanvas);
 
 
@@ -781,6 +781,22 @@ referencedClasses: []
 }),
 }),
 smalltalk.TagBrush);
 smalltalk.TagBrush);
 
 
+smalltalk.addMethod(
+'_empty',
+smalltalk.method({
+selector: 'empty',
+category: 'adding',
+fn: function (){
+var self=this;
+smalltalk.send(smalltalk.send(self, "_asJQuery", []), "_empty", []);
+return self;},
+args: [],
+source: unescape('empty%0A%09self%20asJQuery%20empty'),
+messageSends: ["empty", "asJQuery"],
+referencedClasses: []
+}),
+smalltalk.TagBrush);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_at_put_',
 '_at_put_',
 smalltalk.method({
 smalltalk.method({
@@ -1167,22 +1183,6 @@ referencedClasses: []
 }),
 }),
 smalltalk.TagBrush);
 smalltalk.TagBrush);
 
 
-smalltalk.addMethod(
-'_empty',
-smalltalk.method({
-selector: 'empty',
-category: 'adding',
-fn: function (){
-var self=this;
-smalltalk.send(smalltalk.send(self, "_asJQuery", []), "_empty", []);
-return self;},
-args: [],
-source: unescape('empty%0A%09self%20asJQuery%20empty'),
-messageSends: ["empty", "asJQuery"],
-referencedClasses: []
-}),
-smalltalk.TagBrush);
-
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_fromString_canvas_',
 '_fromString_canvas_',

+ 0 - 11
js/Compiler.deploy.js

@@ -1796,17 +1796,6 @@ smalltalk.Compiler.klass);
 
 
 
 
 smalltalk.addClass('DoIt', smalltalk.Object, [], 'Compiler');
 smalltalk.addClass('DoIt', smalltalk.Object, [], 'Compiler');
-smalltalk.addMethod(
-'_doIt',
-smalltalk.method({
-selector: 'doIt',
-fn: function (){
-var self=this;
-return smalltalk.send((function(){return smalltalk.send((1), "_fdsfds", []);}), "_value", []);
-return self;}
-}),
-smalltalk.DoIt);
-
 
 
 
 
 smalltalk.addClass('DynamicArrayNode', smalltalk.Node, [], 'Compiler');
 smalltalk.addClass('DynamicArrayNode', smalltalk.Node, [], 'Compiler');

+ 2 - 18
js/Compiler.js

@@ -2059,7 +2059,7 @@ var self=this;
 return smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_parse_", [aString]);
 return smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_parse_", [aString]);
 return self;},
 return self;},
 args: ["aString"],
 args: ["aString"],
-source: unescape('parse%3A%20aString%0A%20%20%20%20%5ESmalltalk%20current%20parse%3A%20aString%20'),
+source: unescape('parse%3A%20aString%0A%20%20%20%20%5ESmalltalk%20current%20parse%3A%20aString'),
 messageSends: ["parse:", "current"],
 messageSends: ["parse:", "current"],
 referencedClasses: [smalltalk.Smalltalk]
 referencedClasses: [smalltalk.Smalltalk]
 }),
 }),
@@ -2175,7 +2175,7 @@ return self;},
 args: [],
 args: [],
 source: unescape('recompileAll%0A%09Smalltalk%20current%20classes%20do%3A%20%5B%3Aeach%20%7C%0A%09%09Transcript%20show%3A%20each%3B%20cr.%0A%09%09%5Bself%20recompile%3A%20each%5D%20valueWithTimeout%3A%20100%5D'),
 source: unescape('recompileAll%0A%09Smalltalk%20current%20classes%20do%3A%20%5B%3Aeach%20%7C%0A%09%09Transcript%20show%3A%20each%3B%20cr.%0A%09%09%5Bself%20recompile%3A%20each%5D%20valueWithTimeout%3A%20100%5D'),
 messageSends: ["do:", "classes", "current", "show:", "cr", "valueWithTimeout:", "recompile:"],
 messageSends: ["do:", "classes", "current", "show:", "cr", "valueWithTimeout:", "recompile:"],
-referencedClasses: [smalltalk.Smalltalk,smalltalk.Transcript]
+referencedClasses: [smalltalk.Smalltalk]
 }),
 }),
 smalltalk.Compiler);
 smalltalk.Compiler);
 
 
@@ -2511,22 +2511,6 @@ smalltalk.Compiler.klass);
 
 
 
 
 smalltalk.addClass('DoIt', smalltalk.Object, [], 'Compiler');
 smalltalk.addClass('DoIt', smalltalk.Object, [], 'Compiler');
-smalltalk.addMethod(
-'_doIt',
-smalltalk.method({
-selector: 'doIt',
-category: '',
-fn: function (){
-var self=this;
-return smalltalk.send((function(){return smalltalk.send((1), "_fdsfds", []);}), "_value", []);
-return self;},
-args: [],
-source: unescape('doIt%20%5E%5B1%20fdsfds%5D%20value'),
-messageSends: ["value", "fdsfds"],
-referencedClasses: []
-}),
-smalltalk.DoIt);
-
 
 
 
 
 smalltalk.addClass('DynamicArrayNode', smalltalk.Node, [], 'Compiler');
 smalltalk.addClass('DynamicArrayNode', smalltalk.Node, [], 'Compiler');

+ 2 - 2
js/Examples.js

@@ -288,7 +288,7 @@ return self;},
 args: [],
 args: [],
 source: unescape('newPiece%0A%09movingPiece%20%3A%3D%20TetrisPiece%20atRandom'),
 source: unescape('newPiece%0A%09movingPiece%20%3A%3D%20TetrisPiece%20atRandom'),
 messageSends: ["atRandom"],
 messageSends: ["atRandom"],
-referencedClasses: [smalltalk.TetrisPiece]
+referencedClasses: []
 }),
 }),
 smalltalk.Tetris);
 smalltalk.Tetris);
 
 
@@ -375,7 +375,7 @@ return self;},
 args: ["html"],
 args: ["html"],
 source: unescape('renderCanvasOn%3A%20html%0A%09%7C%20canvas%20%7C%0A%09canvas%20%3A%3D%20html%20canvas.%0A%09canvas%20at%3A%20%27width%27%20put%3A%20self%20width%20asString.%0A%09canvas%20at%3A%20%27height%27%20put%3A%20self%20height%20asString.%0A%09renderingContext%20%3A%3D%20CanvasRenderingContext%20tagBrush%3A%20canvas.%0A%09self%20redraw'),
 source: unescape('renderCanvasOn%3A%20html%0A%09%7C%20canvas%20%7C%0A%09canvas%20%3A%3D%20html%20canvas.%0A%09canvas%20at%3A%20%27width%27%20put%3A%20self%20width%20asString.%0A%09canvas%20at%3A%20%27height%27%20put%3A%20self%20height%20asString.%0A%09renderingContext%20%3A%3D%20CanvasRenderingContext%20tagBrush%3A%20canvas.%0A%09self%20redraw'),
 messageSends: ["canvas", "at:put:", "asString", "width", "height", "tagBrush:", "redraw"],
 messageSends: ["canvas", "at:put:", "asString", "width", "height", "tagBrush:", "redraw"],
-referencedClasses: [smalltalk.CanvasRenderingContext]
+referencedClasses: []
 }),
 }),
 smalltalk.Tetris);
 smalltalk.Tetris);
 
 

+ 279 - 247
js/IDE.deploy.js

@@ -10,6 +10,22 @@ return self;}
 }),
 }),
 smalltalk.TabManager);
 smalltalk.TabManager);
 
 
+smalltalk.addMethod(
+'_labelFor_',
+smalltalk.method({
+selector: 'labelFor:',
+fn: function (aWidget){
+var self=this;
+var label=nil;
+var maxSize=nil;
+maxSize=(15);
+label=smalltalk.send(smalltalk.send(aWidget, "_label", []), "_copyFrom_to_", [(0), smalltalk.send(smalltalk.send(smalltalk.send(aWidget, "_label", []), "_size", []), "_min_", [maxSize])]);
+(($receiver = (($receiver = smalltalk.send(smalltalk.send(aWidget, "_label", []), "_size", [])).klass === smalltalk.Number) ? $receiver >maxSize : smalltalk.send($receiver, "__gt", [maxSize])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return label=smalltalk.send(label, "__comma", ["..."]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return label=smalltalk.send(label, "__comma", ["..."]);})]);
+return label;
+return self;}
+}),
+smalltalk.TabManager);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_updateBodyMargin',
 '_updateBodyMargin',
 smalltalk.method({
 smalltalk.method({
@@ -142,6 +158,19 @@ return self;}
 }),
 }),
 smalltalk.TabManager);
 smalltalk.TabManager);
 
 
+smalltalk.addMethod(
+'_search_',
+smalltalk.method({
+selector: 'search:',
+fn: function (aString){
+var self=this;
+var searchedClass=nil;
+searchedClass=smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_at_", [aString]);
+(($receiver = smalltalk.send(searchedClass, "_isClass", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send((smalltalk.Browser || Browser), "_openOn_", [searchedClass]);})() : (function(){return smalltalk.send((smalltalk.ReferencesBrowser || ReferencesBrowser), "_search_", [aString]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send((smalltalk.Browser || Browser), "_openOn_", [searchedClass]);}), (function(){return smalltalk.send((smalltalk.ReferencesBrowser || ReferencesBrowser), "_search_", [aString]);})]);
+return self;}
+}),
+smalltalk.TabManager);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_addTab_',
 '_addTab_',
 smalltalk.method({
 smalltalk.method({
@@ -223,33 +252,6 @@ return self;}
 }),
 }),
 smalltalk.TabManager);
 smalltalk.TabManager);
 
 
-smalltalk.addMethod(
-'_update',
-smalltalk.method({
-selector: 'update',
-fn: function (){
-var self=this;
-smalltalk.send(self, "_renderTabs", []);
-return self;}
-}),
-smalltalk.TabManager);
-
-smalltalk.addMethod(
-'_labelFor_',
-smalltalk.method({
-selector: 'labelFor:',
-fn: function (aWidget){
-var self=this;
-var label=nil;
-var maxSize=nil;
-maxSize=(15);
-label=smalltalk.send(smalltalk.send(aWidget, "_label", []), "_copyFrom_to_", [(0), smalltalk.send(smalltalk.send(smalltalk.send(aWidget, "_label", []), "_size", []), "_min_", [maxSize])]);
-(($receiver = (($receiver = smalltalk.send(smalltalk.send(aWidget, "_label", []), "_size", [])).klass === smalltalk.Number) ? $receiver >maxSize : smalltalk.send($receiver, "__gt", [maxSize])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return label=smalltalk.send(label, "__comma", ["..."]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return label=smalltalk.send(label, "__comma", ["..."]);})]);
-return label;
-return self;}
-}),
-smalltalk.TabManager);
-
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_renderToolbarOn_',
 '_renderToolbarOn_',
 smalltalk.method({
 smalltalk.method({
@@ -262,14 +264,12 @@ return self;}
 smalltalk.TabManager);
 smalltalk.TabManager);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_search_',
+'_update',
 smalltalk.method({
 smalltalk.method({
-selector: 'search:',
-fn: function (aString){
+selector: 'update',
+fn: function (){
 var self=this;
 var self=this;
-var searchedClass=nil;
-searchedClass=smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_at_", [aString]);
-(($receiver = smalltalk.send(searchedClass, "_isClass", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send((smalltalk.Browser || Browser), "_openOn_", [searchedClass]);})() : (function(){return smalltalk.send((smalltalk.ReferencesBrowser || ReferencesBrowser), "_search_", [aString]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send((smalltalk.Browser || Browser), "_openOn_", [searchedClass]);}), (function(){return smalltalk.send((smalltalk.ReferencesBrowser || ReferencesBrowser), "_search_", [aString]);})]);
+smalltalk.send(self, "_renderTabs", []);
 return self;}
 return self;}
 }),
 }),
 smalltalk.TabManager);
 smalltalk.TabManager);
@@ -356,6 +356,17 @@ return self;}
 }),
 }),
 smalltalk.TabWidget);
 smalltalk.TabWidget);
 
 
+smalltalk.addMethod(
+'_close',
+smalltalk.method({
+selector: 'close',
+fn: function (){
+var self=this;
+smalltalk.send(smalltalk.send((smalltalk.TabManager || TabManager), "_current", []), "_closeTab_", [self]);
+return self;}
+}),
+smalltalk.TabWidget);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_renderOn_',
 '_renderOn_',
 smalltalk.method({
 smalltalk.method({
@@ -423,17 +434,6 @@ return self;}
 }),
 }),
 smalltalk.TabWidget);
 smalltalk.TabWidget);
 
 
-smalltalk.addMethod(
-'_close',
-smalltalk.method({
-selector: 'close',
-fn: function (){
-var self=this;
-smalltalk.send(smalltalk.send((smalltalk.TabManager || TabManager), "_current", []), "_closeTab_", [self]);
-return self;}
-}),
-smalltalk.TabWidget);
-
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_open',
 '_open',
@@ -503,6 +503,17 @@ return self;}
 }),
 }),
 smalltalk.Workspace);
 smalltalk.Workspace);
 
 
+smalltalk.addMethod(
+'_fileIn',
+smalltalk.method({
+selector: 'fileIn',
+fn: function (){
+var self=this;
+smalltalk.send(self['@sourceArea'], "_fileIn", []);
+return self;}
+}),
+smalltalk.Workspace);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_renderBoxOn_',
 '_renderBoxOn_',
 smalltalk.method({
 smalltalk.method({
@@ -524,6 +535,7 @@ var self=this;
 (function($rec){smalltalk.send($rec, "_with_", ["DoIt"]);smalltalk.send($rec, "_title_", [unescape("ctrl+d")]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_doIt", []);})]);})(smalltalk.send(html, "_button", []));
 (function($rec){smalltalk.send($rec, "_with_", ["DoIt"]);smalltalk.send($rec, "_title_", [unescape("ctrl+d")]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_doIt", []);})]);})(smalltalk.send(html, "_button", []));
 (function($rec){smalltalk.send($rec, "_with_", ["PrintIt"]);smalltalk.send($rec, "_title_", [unescape("ctrl+p")]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_printIt", []);})]);})(smalltalk.send(html, "_button", []));
 (function($rec){smalltalk.send($rec, "_with_", ["PrintIt"]);smalltalk.send($rec, "_title_", [unescape("ctrl+p")]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_printIt", []);})]);})(smalltalk.send(html, "_button", []));
 (function($rec){smalltalk.send($rec, "_with_", ["InspectIt"]);smalltalk.send($rec, "_title_", [unescape("ctrl+i")]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_inspectIt", []);})]);})(smalltalk.send(html, "_button", []));
 (function($rec){smalltalk.send($rec, "_with_", ["InspectIt"]);smalltalk.send($rec, "_title_", [unescape("ctrl+i")]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_inspectIt", []);})]);})(smalltalk.send(html, "_button", []));
+(function($rec){smalltalk.send($rec, "_with_", ["FileIn"]);smalltalk.send($rec, "_title_", [unescape("ctrl+f")]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_fileIn", []);})]);})(smalltalk.send(html, "_button", []));
 (function($rec){smalltalk.send($rec, "_with_", ["Clear workspace"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_clearWorkspace", []);})]);})(smalltalk.send(html, "_button", []));
 (function($rec){smalltalk.send($rec, "_with_", ["Clear workspace"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_clearWorkspace", []);})]);})(smalltalk.send(html, "_button", []));
 return self;}
 return self;}
 }),
 }),
@@ -1441,6 +1453,17 @@ return self;}
 }),
 }),
 smalltalk.Inspector);
 smalltalk.Inspector);
 
 
+smalltalk.addMethod(
+'_sourceArea',
+smalltalk.method({
+selector: 'sourceArea',
+fn: function (){
+var self=this;
+return self['@sourceArea'];
+return self;}
+}),
+smalltalk.Inspector);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_inspect_',
 '_inspect_',
 smalltalk.method({
 smalltalk.method({
@@ -1581,17 +1604,6 @@ return self;}
 }),
 }),
 smalltalk.Inspector);
 smalltalk.Inspector);
 
 
-smalltalk.addMethod(
-'_sourceArea',
-smalltalk.method({
-selector: 'sourceArea',
-fn: function (){
-var self=this;
-return self['@sourceArea'];
-return self;}
-}),
-smalltalk.Inspector);
-
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_on_',
 '_on_',
@@ -1992,6 +2004,61 @@ return self;}
 }),
 }),
 smalltalk.SourceArea);
 smalltalk.SourceArea);
 
 
+smalltalk.addMethod(
+'_receiver',
+smalltalk.method({
+selector: 'receiver',
+fn: function (){
+var self=this;
+return (($receiver = self['@receiver']) == nil || $receiver == undefined) ? (function(){return smalltalk.send((smalltalk.DoIt || DoIt), "_new", []);})() : $receiver;
+return self;}
+}),
+smalltalk.SourceArea);
+
+smalltalk.addMethod(
+'_receiver_',
+smalltalk.method({
+selector: 'receiver:',
+fn: function (anObject){
+var self=this;
+self['@receiver']=anObject;
+return self;}
+}),
+smalltalk.SourceArea);
+
+smalltalk.addMethod(
+'_onDoIt_',
+smalltalk.method({
+selector: 'onDoIt:',
+fn: function (aBlock){
+var self=this;
+self['@onDoIt']=aBlock;
+return self;}
+}),
+smalltalk.SourceArea);
+
+smalltalk.addMethod(
+'_onDoIt',
+smalltalk.method({
+selector: 'onDoIt',
+fn: function (){
+var self=this;
+return self['@onDoIt'];
+return self;}
+}),
+smalltalk.SourceArea);
+
+smalltalk.addMethod(
+'_currentLineOrSelection',
+smalltalk.method({
+selector: 'currentLineOrSelection',
+fn: function (){
+var self=this;
+return (($receiver = smalltalk.send(self['@editor'], "_somethingSelected", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_currentLine", []);})() : (function(){return smalltalk.send(self, "_selection", []);})()) : smalltalk.send($receiver, "_ifFalse_ifTrue_", [(function(){return smalltalk.send(self, "_currentLine", []);}), (function(){return smalltalk.send(self, "_selection", []);})]);
+return self;}
+}),
+smalltalk.SourceArea);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_clear',
 '_clear',
 smalltalk.method({
 smalltalk.method({
@@ -2009,10 +2076,8 @@ smalltalk.method({
 selector: 'doIt',
 selector: 'doIt',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-var selection=nil;
 var result=nil;
 var result=nil;
-(($receiver = smalltalk.send(self['@editor'], "_somethingSelected", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return selection=smalltalk.send(self, "_currentLine", []);})() : (function(){return selection=smalltalk.send(self, "_selection", []);})()) : smalltalk.send($receiver, "_ifFalse_ifTrue_", [(function(){return selection=smalltalk.send(self, "_currentLine", []);}), (function(){return selection=smalltalk.send(self, "_selection", []);})]);
-result=smalltalk.send(self, "_eval_", [selection]);
+result=smalltalk.send(self, "_eval_", [smalltalk.send(self, "_currentLineOrSelection", [])]);
 (($receiver = smalltalk.send(self, "_onDoIt", [])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(smalltalk.send(self, "_onDoIt", []), "_value", []);})() : nil;
 (($receiver = smalltalk.send(self, "_onDoIt", [])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(smalltalk.send(self, "_onDoIt", []), "_value", []);})() : nil;
 return result;
 return result;
 return self;}
 return self;}
@@ -2104,6 +2169,17 @@ return self;}
 }),
 }),
 smalltalk.SourceArea);
 smalltalk.SourceArea);
 
 
+smalltalk.addMethod(
+'_fileIn',
+smalltalk.method({
+selector: 'fileIn',
+fn: function (){
+var self=this;
+smalltalk.send(smalltalk.send((smalltalk.Importer || Importer), "_new", []), "_import_", [smalltalk.send(smalltalk.send(self, "_currentLineOrSelection", []), "_readStream", [])]);
+return self;}
+}),
+smalltalk.SourceArea);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_onKeyUp_',
 '_onKeyUp_',
 smalltalk.method({
 smalltalk.method({
@@ -2141,50 +2217,6 @@ return self;}
 }),
 }),
 smalltalk.SourceArea);
 smalltalk.SourceArea);
 
 
-smalltalk.addMethod(
-'_receiver',
-smalltalk.method({
-selector: 'receiver',
-fn: function (){
-var self=this;
-return (($receiver = self['@receiver']) == nil || $receiver == undefined) ? (function(){return smalltalk.send((smalltalk.DoIt || DoIt), "_new", []);})() : $receiver;
-return self;}
-}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-'_receiver_',
-smalltalk.method({
-selector: 'receiver:',
-fn: function (anObject){
-var self=this;
-self['@receiver']=anObject;
-return self;}
-}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-'_onDoIt_',
-smalltalk.method({
-selector: 'onDoIt:',
-fn: function (aBlock){
-var self=this;
-self['@onDoIt']=aBlock;
-return self;}
-}),
-smalltalk.SourceArea);
-
-smalltalk.addMethod(
-'_onDoIt',
-smalltalk.method({
-selector: 'onDoIt',
-fn: function (){
-var self=this;
-return self['@onDoIt'];
-return self;}
-}),
-smalltalk.SourceArea);
-
 
 
 
 
 smalltalk.addClass('ClassesList', smalltalk.Widget, ['browser', 'ul', 'nodes'], 'IDE');
 smalltalk.addClass('ClassesList', smalltalk.Widget, ['browser', 'ul', 'nodes'], 'IDE');
@@ -2299,6 +2331,25 @@ smalltalk.ClassesList.klass);
 
 
 
 
 smalltalk.addClass('ClassesListNode', smalltalk.Widget, ['browser', 'theClass', 'level', 'nodes'], 'IDE');
 smalltalk.addClass('ClassesListNode', smalltalk.Widget, ['browser', 'theClass', 'level', 'nodes'], 'IDE');
+smalltalk.addMethod(
+'_renderOn_',
+smalltalk.method({
+selector: 'renderOn:',
+fn: function (html){
+var self=this;
+var li=nil;
+var cssClass=nil;
+cssClass="";
+li=smalltalk.send(smalltalk.send(html, "_li", []), "_onClick_", [(function(){return smalltalk.send(smalltalk.send(self, "_browser", []), "_selectClass_", [smalltalk.send(self, "_theClass", [])]);})]);
+smalltalk.send(smalltalk.send(li, "_asJQuery", []), "_contents_", [smalltalk.send(self, "_label", [])]);
+(($receiver = smalltalk.send(smalltalk.send(smalltalk.send(self, "_browser", []), "_selectedClass", []), "__eq", [smalltalk.send(self, "_theClass", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return cssClass=smalltalk.send(cssClass, "__comma", [" selected"]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return cssClass=smalltalk.send(cssClass, "__comma", [" selected"]);})]);
+(($receiver = smalltalk.send(smalltalk.send(smalltalk.send(self, "_theClass", []), "_comment", []), "_isEmpty", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return cssClass=smalltalk.send(cssClass, "__comma", [" commented"]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return cssClass=smalltalk.send(cssClass, "__comma", [" commented"]);})]);
+smalltalk.send(li, "_class_", [cssClass]);
+smalltalk.send(smalltalk.send(self, "_nodes", []), "_do_", [(function(each){return smalltalk.send(each, "_renderOn_", [html]);})]);
+return self;}
+}),
+smalltalk.ClassesListNode);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_nodes',
 '_nodes',
 smalltalk.method({
 smalltalk.method({
@@ -2407,25 +2458,6 @@ return self;}
 }),
 }),
 smalltalk.ClassesListNode);
 smalltalk.ClassesListNode);
 
 
-smalltalk.addMethod(
-'_renderOn_',
-smalltalk.method({
-selector: 'renderOn:',
-fn: function (html){
-var self=this;
-var li=nil;
-var cssClass=nil;
-cssClass="";
-li=smalltalk.send(smalltalk.send(html, "_li", []), "_onClick_", [(function(){return smalltalk.send(smalltalk.send(self, "_browser", []), "_selectClass_", [smalltalk.send(self, "_theClass", [])]);})]);
-smalltalk.send(smalltalk.send(li, "_asJQuery", []), "_contents_", [smalltalk.send(self, "_label", [])]);
-(($receiver = smalltalk.send(smalltalk.send(smalltalk.send(self, "_browser", []), "_selectedClass", []), "__eq", [smalltalk.send(self, "_theClass", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return cssClass=smalltalk.send(cssClass, "__comma", [" selected"]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return cssClass=smalltalk.send(cssClass, "__comma", [" selected"]);})]);
-(($receiver = smalltalk.send(smalltalk.send(smalltalk.send(self, "_theClass", []), "_comment", []), "_isEmpty", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return cssClass=smalltalk.send(cssClass, "__comma", [" commented"]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return cssClass=smalltalk.send(cssClass, "__comma", [" commented"]);})]);
-smalltalk.send(li, "_class_", [cssClass]);
-smalltalk.send(smalltalk.send(self, "_nodes", []), "_do_", [(function(each){return smalltalk.send(each, "_renderOn_", [html]);})]);
-return self;}
-}),
-smalltalk.ClassesListNode);
-
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_on_browser_classes_level_',
 '_on_browser_classes_level_',
@@ -2474,178 +2506,181 @@ return self;}
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_selectContext_',
+'_source',
 smalltalk.method({
 smalltalk.method({
-selector: 'selectContext:',
-fn: function (aContext){
+selector: 'source',
+fn: function (){
 var self=this;
 var self=this;
-self['@selectedContext']=aContext;
-self['@selectedVariable']=nil;
-self['@selectedVariableName']=nil;
-(function($rec){smalltalk.send($rec, "_updateContextsList", []);smalltalk.send($rec, "_updateSourceArea", []);smalltalk.send($rec, "_updateInspector", []);smalltalk.send($rec, "_updateVariablesList", []);return smalltalk.send($rec, "_updateStatus", []);})(self);
+return (($receiver = smalltalk.send(self, "_method", [])) == nil || $receiver == undefined) ? (function(){return unescape("Method%20doesn%27t%20exist%21");})() : (function(){return smalltalk.send(smalltalk.send(self, "_method", []), "_source", []);})();
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_renderTopPanelOn_',
+'_method',
 smalltalk.method({
 smalltalk.method({
-selector: 'renderTopPanelOn:',
-fn: function (html){
+selector: 'method',
+fn: function (){
 var self=this;
 var self=this;
-self['@selectedContext']=smalltalk.send(smalltalk.send(self, "_error", []), "_context", []);
-(function($rec){smalltalk.send($rec, "_class_", ["top"]);return smalltalk.send($rec, "_with_", [(function(){(function($rec){smalltalk.send($rec, "_class_", ["label"]);return smalltalk.send($rec, "_with_", [smalltalk.send(smalltalk.send(self, "_error", []), "_messageText", [])]);})(smalltalk.send(html, "_div", []));return self['@ul']=(function($rec){smalltalk.send($rec, "_class_", ["jt_column debugger contexts"]);return smalltalk.send($rec, "_with_", [(function(){return smalltalk.send(self, "_renderContext_on_", [smalltalk.send(smalltalk.send(self, "_error", []), "_context", []), html]);})]);})(smalltalk.send(html, "_ul", []));})]);})(smalltalk.send(html, "_div", []));
+return smalltalk.send(smalltalk.send(smalltalk.send(self['@selectedContext'], "_receiver", []), "_class", []), "_methodAt_", [smalltalk.send(self['@selectedContext'], "_selector", [])]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_renderContext_on_',
+'_arguments',
 smalltalk.method({
 smalltalk.method({
-selector: 'renderContext:on:',
-fn: function (aContext, html){
+selector: 'arguments',
+fn: function (){
 var self=this;
 var self=this;
-var li=nil;
-li=smalltalk.send(html, "_li", []);
-(($receiver = smalltalk.send(self['@selectedContext'], "__eq", [aContext])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(li, "_class_", ["selected"]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(li, "_class_", ["selected"]);})]);
-(function($rec){smalltalk.send($rec, "_with_", [smalltalk.send(aContext, "_asString", [])]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_selectContext_", [aContext]);})]);})(li);
-(($receiver = smalltalk.send(aContext, "_home", [])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self, "_renderContext_on_", [smalltalk.send(aContext, "_home", []), html]);})() : nil;
+return (($receiver = smalltalk.send(self, "_method", [])) == nil || $receiver == undefined) ? (function(){return smalltalk.send(smalltalk.send(self['@selectedContext'], "_temps", []), "_collect_", [(function(each){return nil;})]);})() : (function(){return smalltalk.send(smalltalk.send(self, "_method", []), "_arguments", []);})();
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_renderBottomPanelOn_',
+'_receiver',
 smalltalk.method({
 smalltalk.method({
-selector: 'renderBottomPanelOn:',
-fn: function (html){
+selector: 'receiver',
+fn: function (){
 var self=this;
 var self=this;
-(function($rec){smalltalk.send($rec, "_class_", ["jt_sourceCode debugger"]);return smalltalk.send($rec, "_with_", [(function(){self['@sourceArea']=smalltalk.send((smalltalk.SourceArea || SourceArea), "_new", []);return smalltalk.send(self['@sourceArea'], "_renderOn_", [html]);})]);})(smalltalk.send(html, "_div", []));
-self['@ul2']=smalltalk.send(smalltalk.send(html, "_ul", []), "_class_", ["jt_column debugger variables"]);
-self['@inspector']=smalltalk.send(smalltalk.send(html, "_div", []), "_class_", ["jt_column debugger inspector"]);
-smalltalk.send(self['@sourceArea'], "_onKeyUp_", [(function(){return smalltalk.send(self, "_updateStatus", []);})]);
+return smalltalk.send(self['@selectedContext'], "_receiver", []);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_canBeClosed',
+'_selectContext_',
 smalltalk.method({
 smalltalk.method({
-selector: 'canBeClosed',
-fn: function (){
+selector: 'selectContext:',
+fn: function (aContext){
 var self=this;
 var self=this;
-return true;
+self['@selectedContext']=aContext;
+self['@selectedVariable']=nil;
+self['@selectedVariableName']=nil;
+(function($rec){smalltalk.send($rec, "_updateContextsList", []);smalltalk.send($rec, "_updateSourceArea", []);smalltalk.send($rec, "_updateInspector", []);smalltalk.send($rec, "_updateVariablesList", []);return smalltalk.send($rec, "_updateStatus", []);})(self);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_updateContextsList',
+'_proceed',
 smalltalk.method({
 smalltalk.method({
-selector: 'updateContextsList',
+selector: 'proceed',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-smalltalk.send(self['@ul'], "_contents_", [(function(html){return smalltalk.send(self, "_renderContext_on_", [smalltalk.send(smalltalk.send(self, "_error", []), "_context", []), html]);})]);
+smalltalk.send(self, "_close", []);
+smalltalk.send(smalltalk.send(self['@selectedContext'], "_receiver", []), "_perform_withArguments_", [smalltalk.send(self['@selectedContext'], "_selector", []), smalltalk.send(self['@selectedContext'], "_temps", [])]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_updateSourceArea',
+'_save',
 smalltalk.method({
 smalltalk.method({
-selector: 'updateSourceArea',
+selector: 'save',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-smalltalk.send(self['@sourceArea'], "_val_", [smalltalk.send(self, "_source", [])]);
+var protocol=nil;
+protocol=smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self['@selectedContext'], "_receiver", []), "_class", []), "_methodDictionary", []), "_at_", [smalltalk.send(self['@selectedContext'], "_selector", [])]), "_category", []);
+smalltalk.send(smalltalk.send(smalltalk.send(self['@selectedContext'], "_receiver", []), "_class", []), "_compile_category_", [smalltalk.send(self['@sourceArea'], "_val", []), protocol]);
+smalltalk.send(self, "_updateStatus", []);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_renderButtonsOn_',
+'_selectVariable_named_',
 smalltalk.method({
 smalltalk.method({
-selector: 'renderButtonsOn:',
-fn: function (html){
+selector: 'selectVariable:named:',
+fn: function (anObject, aString){
 var self=this;
 var self=this;
-self['@saveButton']=(function($rec){smalltalk.send($rec, "_with_", ["Save"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_save", []);})]);})(smalltalk.send(html, "_button", []));
-(function($rec){smalltalk.send($rec, "_with_", ["DoIt"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self['@sourceArea'], "_doIt", []);})]);})(smalltalk.send(html, "_button", []));
-(function($rec){smalltalk.send($rec, "_with_", ["PrintIt"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self['@sourceArea'], "_printIt", []);})]);})(smalltalk.send(html, "_button", []));
-(function($rec){smalltalk.send($rec, "_with_", ["InspectIt"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self['@sourceArea'], "_inspectIt", []);})]);})(smalltalk.send(html, "_button", []));
-(function($rec){smalltalk.send($rec, "_with_", ["Proceed"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_proceed", []);})]);})(smalltalk.send(html, "_button", []));
-(function($rec){smalltalk.send($rec, "_with_", ["Abandon"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_close", []);})]);})(smalltalk.send(html, "_button", []));
-self['@inspectButton']=(function($rec){smalltalk.send($rec, "_class_", ["jt_button debugger inspect"]);smalltalk.send($rec, "_with_", ["Inspect"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_inspectSelectedVariable", []);})]);})(smalltalk.send(html, "_button", []));
-(function($rec){smalltalk.send($rec, "_updateSourceArea", []);smalltalk.send($rec, "_updateStatus", []);smalltalk.send($rec, "_updateVariablesList", []);return smalltalk.send($rec, "_updateInspector", []);})(self);
+self['@selectedVariable']=anObject;
+self['@selectedVariableName']=aString;
+smalltalk.send(self['@inspector'], "_contents_", [(function(html){return smalltalk.send(html, "_with_", [smalltalk.send(anObject, "_printString", [])]);})]);
+smalltalk.send(self, "_updateVariablesList", []);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_proceed',
+'_inspectSelectedVariable',
 smalltalk.method({
 smalltalk.method({
-selector: 'proceed',
+selector: 'inspectSelectedVariable',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-smalltalk.send(self, "_close", []);
-smalltalk.send(smalltalk.send(self['@selectedContext'], "_receiver", []), "_perform_withArguments_", [smalltalk.send(self['@selectedContext'], "_selector", []), smalltalk.send(self['@selectedContext'], "_temps", [])]);
+smalltalk.send(self['@selectedVariable'], "_inspect", []);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_save',
+'_initialize',
 smalltalk.method({
 smalltalk.method({
-selector: 'save',
+selector: 'initialize',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-var protocol=nil;
-protocol=smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self['@selectedContext'], "_receiver", []), "_class", []), "_methodDictionary", []), "_at_", [smalltalk.send(self['@selectedContext'], "_selector", [])]), "_category", []);
-smalltalk.send(smalltalk.send(smalltalk.send(self['@selectedContext'], "_receiver", []), "_class", []), "_compile_category_", [smalltalk.send(self['@sourceArea'], "_val", []), protocol]);
-smalltalk.send(self, "_updateStatus", []);
+smalltalk.send(self, "_initialize", [], smalltalk.TabWidget);
+smalltalk.send(self['@unsavedChanges'], "__eq", [false]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_updateStatus',
+'_renderTopPanelOn_',
 smalltalk.method({
 smalltalk.method({
-selector: 'updateStatus',
-fn: function (){
+selector: 'renderTopPanelOn:',
+fn: function (html){
 var self=this;
 var self=this;
-(($receiver = smalltalk.send(smalltalk.send(self['@sourceArea'], "_val", []), "__eq", [smalltalk.send(self, "_source", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){(($receiver = self['@saveButton']) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self['@saveButton'], "_at_put_", ["disabled", true]);})() : nil;return self['@unsavedChanges']=false;})() : (function(){(($receiver = self['@saveButton']) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self['@saveButton'], "_removeAt_", ["disabled"]);})() : nil;return self['@unsavedChanges']=true;})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){(($receiver = self['@saveButton']) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self['@saveButton'], "_at_put_", ["disabled", true]);})() : nil;return self['@unsavedChanges']=false;}), (function(){(($receiver = self['@saveButton']) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self['@saveButton'], "_removeAt_", ["disabled"]);})() : nil;return self['@unsavedChanges']=true;})]);
+self['@selectedContext']=smalltalk.send(smalltalk.send(self, "_error", []), "_context", []);
+(function($rec){smalltalk.send($rec, "_class_", ["top"]);return smalltalk.send($rec, "_with_", [(function(){(function($rec){smalltalk.send($rec, "_class_", ["label"]);return smalltalk.send($rec, "_with_", [smalltalk.send(smalltalk.send(self, "_error", []), "_messageText", [])]);})(smalltalk.send(html, "_div", []));return self['@ul']=(function($rec){smalltalk.send($rec, "_class_", ["jt_column debugger contexts"]);return smalltalk.send($rec, "_with_", [(function(){return smalltalk.send(self, "_renderContext_on_", [smalltalk.send(smalltalk.send(self, "_error", []), "_context", []), html]);})]);})(smalltalk.send(html, "_ul", []));})]);})(smalltalk.send(html, "_div", []));
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_initialize',
+'_renderContext_on_',
 smalltalk.method({
 smalltalk.method({
-selector: 'initialize',
-fn: function (){
+selector: 'renderContext:on:',
+fn: function (aContext, html){
 var self=this;
 var self=this;
-smalltalk.send(self, "_initialize", [], smalltalk.TabWidget);
-smalltalk.send(self['@unsavedChanges'], "__eq", [false]);
+var li=nil;
+li=smalltalk.send(html, "_li", []);
+(($receiver = smalltalk.send(self['@selectedContext'], "__eq", [aContext])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(li, "_class_", ["selected"]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(li, "_class_", ["selected"]);})]);
+(function($rec){smalltalk.send($rec, "_with_", [smalltalk.send(aContext, "_asString", [])]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_selectContext_", [aContext]);})]);})(li);
+(($receiver = smalltalk.send(aContext, "_home", [])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self, "_renderContext_on_", [smalltalk.send(aContext, "_home", []), html]);})() : nil;
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_source',
+'_renderBottomPanelOn_',
 smalltalk.method({
 smalltalk.method({
-selector: 'source',
-fn: function (){
+selector: 'renderBottomPanelOn:',
+fn: function (html){
 var self=this;
 var self=this;
-return (($receiver = smalltalk.send(self, "_method", [])) == nil || $receiver == undefined) ? (function(){return unescape("Method%20doesn%27t%20exist%21");})() : (function(){return smalltalk.send(smalltalk.send(self, "_method", []), "_source", []);})();
+(function($rec){smalltalk.send($rec, "_class_", ["jt_sourceCode debugger"]);return smalltalk.send($rec, "_with_", [(function(){self['@sourceArea']=smalltalk.send((smalltalk.SourceArea || SourceArea), "_new", []);return smalltalk.send(self['@sourceArea'], "_renderOn_", [html]);})]);})(smalltalk.send(html, "_div", []));
+self['@ul2']=smalltalk.send(smalltalk.send(html, "_ul", []), "_class_", ["jt_column debugger variables"]);
+self['@inspector']=smalltalk.send(smalltalk.send(html, "_div", []), "_class_", ["jt_column debugger inspector"]);
+smalltalk.send(self['@sourceArea'], "_onKeyUp_", [(function(){return smalltalk.send(self, "_updateStatus", []);})]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_updateInspector',
+'_renderButtonsOn_',
 smalltalk.method({
 smalltalk.method({
-selector: 'updateInspector',
-fn: function (){
+selector: 'renderButtonsOn:',
+fn: function (html){
 var self=this;
 var self=this;
-smalltalk.send(self['@inspector'], "_contents_", [(function(html){return nil;})]);
+self['@saveButton']=(function($rec){smalltalk.send($rec, "_with_", ["Save"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_save", []);})]);})(smalltalk.send(html, "_button", []));
+(function($rec){smalltalk.send($rec, "_with_", ["DoIt"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self['@sourceArea'], "_doIt", []);})]);})(smalltalk.send(html, "_button", []));
+(function($rec){smalltalk.send($rec, "_with_", ["PrintIt"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self['@sourceArea'], "_printIt", []);})]);})(smalltalk.send(html, "_button", []));
+(function($rec){smalltalk.send($rec, "_with_", ["InspectIt"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self['@sourceArea'], "_inspectIt", []);})]);})(smalltalk.send(html, "_button", []));
+(function($rec){smalltalk.send($rec, "_with_", ["Proceed"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_proceed", []);})]);})(smalltalk.send(html, "_button", []));
+(function($rec){smalltalk.send($rec, "_with_", ["Abandon"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_close", []);})]);})(smalltalk.send(html, "_button", []));
+self['@inspectButton']=(function($rec){smalltalk.send($rec, "_class_", ["jt_button debugger inspect"]);smalltalk.send($rec, "_with_", ["Inspect"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_inspectSelectedVariable", []);})]);})(smalltalk.send(html, "_button", []));
+(function($rec){smalltalk.send($rec, "_updateSourceArea", []);smalltalk.send($rec, "_updateStatus", []);smalltalk.send($rec, "_updateVariablesList", []);return smalltalk.send($rec, "_updateInspector", []);})(self);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
@@ -2662,74 +2697,71 @@ return self;}
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_updateVariablesList',
+'_canBeClosed',
 smalltalk.method({
 smalltalk.method({
-selector: 'updateVariablesList',
+selector: 'canBeClosed',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-smalltalk.send(self['@ul2'], "_contents_", [(function(html){var li=nil;
-li=(function($rec){smalltalk.send($rec, "_with_", ["self"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_selectVariable_named_", [smalltalk.send(self, "_receiver", []), "self"]);})]);})(smalltalk.send(html, "_li", []));(($receiver = smalltalk.send(self['@selectedVariableName'], "__eq", ["self"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(li, "_class_", ["selected"]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(li, "_class_", ["selected"]);})]);smalltalk.send(smalltalk.send(self, "_arguments", []), "_withIndexDo_", [(function(each, index){var param=nil;
-param=smalltalk.send(smalltalk.send(self['@selectedContext'], "_temps", []), "_at_", [index]);li=(function($rec){smalltalk.send($rec, "_with_", [each]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_selectVariable_named_", [param, each]);})]);})(smalltalk.send(html, "_li", []));return (($receiver = smalltalk.send(self['@selectedVariableName'], "__eq", [each])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(li, "_class_", ["selected"]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(li, "_class_", ["selected"]);})]);})]);return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_receiver", []), "_class", []), "_allInstanceVariableNames", []), "_do_", [(function(each){var ivar=nil;
-ivar=smalltalk.send(smalltalk.send(self, "_receiver", []), "_instVarAt_", [each]);li=(function($rec){smalltalk.send($rec, "_with_", [each]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_selectVariable_named_", [ivar, each]);})]);})(smalltalk.send(html, "_li", []));return (($receiver = smalltalk.send(self['@selectedVariableName'], "__eq", [each])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(li, "_class_", ["selected"]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(li, "_class_", ["selected"]);})]);})]);})]);
-(($receiver = self['@selectedVariable']) == nil || $receiver == undefined) ? (function(){return smalltalk.send(self['@inspectButton'], "_at_put_", ["disabled", true]);})() : (function(){return smalltalk.send(self['@inspectButton'], "_removeAt_", ["disabled"]);})();
+return true;
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_selectVariable_named_',
+'_updateContextsList',
 smalltalk.method({
 smalltalk.method({
-selector: 'selectVariable:named:',
-fn: function (anObject, aString){
+selector: 'updateContextsList',
+fn: function (){
 var self=this;
 var self=this;
-self['@selectedVariable']=anObject;
-self['@selectedVariableName']=aString;
-smalltalk.send(self['@inspector'], "_contents_", [(function(html){return smalltalk.send(html, "_with_", [smalltalk.send(anObject, "_printString", [])]);})]);
-smalltalk.send(self, "_updateVariablesList", []);
+smalltalk.send(self['@ul'], "_contents_", [(function(html){return smalltalk.send(self, "_renderContext_on_", [smalltalk.send(smalltalk.send(self, "_error", []), "_context", []), html]);})]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_method',
+'_updateSourceArea',
 smalltalk.method({
 smalltalk.method({
-selector: 'method',
+selector: 'updateSourceArea',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.send(smalltalk.send(smalltalk.send(self['@selectedContext'], "_receiver", []), "_class", []), "_methodAt_", [smalltalk.send(self['@selectedContext'], "_selector", [])]);
+smalltalk.send(self['@sourceArea'], "_val_", [smalltalk.send(self, "_source", [])]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_arguments',
+'_updateStatus',
 smalltalk.method({
 smalltalk.method({
-selector: 'arguments',
+selector: 'updateStatus',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return (($receiver = smalltalk.send(self, "_method", [])) == nil || $receiver == undefined) ? (function(){return smalltalk.send(smalltalk.send(self['@selectedContext'], "_temps", []), "_collect_", [(function(each){return nil;})]);})() : (function(){return smalltalk.send(smalltalk.send(self, "_method", []), "_arguments", []);})();
+(($receiver = smalltalk.send(smalltalk.send(self['@sourceArea'], "_val", []), "__eq", [smalltalk.send(self, "_source", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){(($receiver = self['@saveButton']) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self['@saveButton'], "_at_put_", ["disabled", true]);})() : nil;return self['@unsavedChanges']=false;})() : (function(){(($receiver = self['@saveButton']) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self['@saveButton'], "_removeAt_", ["disabled"]);})() : nil;return self['@unsavedChanges']=true;})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){(($receiver = self['@saveButton']) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self['@saveButton'], "_at_put_", ["disabled", true]);})() : nil;return self['@unsavedChanges']=false;}), (function(){(($receiver = self['@saveButton']) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self['@saveButton'], "_removeAt_", ["disabled"]);})() : nil;return self['@unsavedChanges']=true;})]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_receiver',
+'_updateInspector',
 smalltalk.method({
 smalltalk.method({
-selector: 'receiver',
+selector: 'updateInspector',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return smalltalk.send(self['@selectedContext'], "_receiver", []);
+smalltalk.send(self['@inspector'], "_contents_", [(function(html){return nil;})]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_inspectSelectedVariable',
+'_updateVariablesList',
 smalltalk.method({
 smalltalk.method({
-selector: 'inspectSelectedVariable',
+selector: 'updateVariablesList',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-smalltalk.send(self['@selectedVariable'], "_inspect", []);
+smalltalk.send(self['@ul2'], "_contents_", [(function(html){var li=nil;
+li=(function($rec){smalltalk.send($rec, "_with_", ["self"]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_selectVariable_named_", [smalltalk.send(self, "_receiver", []), "self"]);})]);})(smalltalk.send(html, "_li", []));(($receiver = smalltalk.send(self['@selectedVariableName'], "__eq", ["self"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(li, "_class_", ["selected"]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(li, "_class_", ["selected"]);})]);smalltalk.send(smalltalk.send(self, "_arguments", []), "_withIndexDo_", [(function(each, index){var param=nil;
+param=smalltalk.send(smalltalk.send(self['@selectedContext'], "_temps", []), "_at_", [index]);li=(function($rec){smalltalk.send($rec, "_with_", [each]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_selectVariable_named_", [param, each]);})]);})(smalltalk.send(html, "_li", []));return (($receiver = smalltalk.send(self['@selectedVariableName'], "__eq", [each])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(li, "_class_", ["selected"]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(li, "_class_", ["selected"]);})]);})]);return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_receiver", []), "_class", []), "_allInstanceVariableNames", []), "_do_", [(function(each){var ivar=nil;
+ivar=smalltalk.send(smalltalk.send(self, "_receiver", []), "_instVarAt_", [each]);li=(function($rec){smalltalk.send($rec, "_with_", [each]);return smalltalk.send($rec, "_onClick_", [(function(){return smalltalk.send(self, "_selectVariable_named_", [ivar, each]);})]);})(smalltalk.send(html, "_li", []));return (($receiver = smalltalk.send(self['@selectedVariableName'], "__eq", [each])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(li, "_class_", ["selected"]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(li, "_class_", ["selected"]);})]);})]);})]);
+(($receiver = self['@selectedVariable']) == nil || $receiver == undefined) ? (function(){return smalltalk.send(self['@inspectButton'], "_at_put_", ["disabled", true]);})() : (function(){return smalltalk.send(self['@inspectButton'], "_removeAt_", ["disabled"]);})();
 return self;}
 return self;}
 }),
 }),
 smalltalk.Debugger);
 smalltalk.Debugger);
@@ -2924,6 +2956,20 @@ return self;}
 }),
 }),
 smalltalk.TestRunner);
 smalltalk.TestRunner);
 
 
+smalltalk.addMethod(
+'_testCases',
+smalltalk.method({
+selector: 'testCases',
+fn: function (){
+var self=this;
+var testCases=nil;
+testCases=[];
+smalltalk.send(smalltalk.send(self, "_selectedClasses", []), "_do_", [(function(each){return smalltalk.send(testCases, "_addAll_", [smalltalk.send(each, "_buildSuite", [])]);})]);
+return testCases;
+return self;}
+}),
+smalltalk.TestRunner);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_selectAllCategories',
 '_selectAllCategories',
 smalltalk.method({
 smalltalk.method({
@@ -2987,6 +3033,17 @@ return self;}
 }),
 }),
 smalltalk.TestRunner);
 smalltalk.TestRunner);
 
 
+smalltalk.addMethod(
+'_performFailure_',
+smalltalk.method({
+selector: 'performFailure:',
+fn: function (aTestCase){
+var self=this;
+smalltalk.send(aTestCase, "_perform_", [smalltalk.send(aTestCase, "_selector", [])]);
+return self;}
+}),
+smalltalk.TestRunner);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_initialize',
 '_initialize',
 smalltalk.method({
 smalltalk.method({
@@ -3195,31 +3252,6 @@ return self;}
 }),
 }),
 smalltalk.TestRunner);
 smalltalk.TestRunner);
 
 
-smalltalk.addMethod(
-'_testCases',
-smalltalk.method({
-selector: 'testCases',
-fn: function (){
-var self=this;
-var testCases=nil;
-testCases=[];
-smalltalk.send(smalltalk.send(self, "_selectedClasses", []), "_do_", [(function(each){return smalltalk.send(testCases, "_addAll_", [smalltalk.send(each, "_buildSuite", [])]);})]);
-return testCases;
-return self;}
-}),
-smalltalk.TestRunner);
-
-smalltalk.addMethod(
-'_performFailure_',
-smalltalk.method({
-selector: 'performFailure:',
-fn: function (aTestCase){
-var self=this;
-smalltalk.send(aTestCase, "_perform_", [smalltalk.send(aTestCase, "_selector", [])]);
-return self;}
-}),
-smalltalk.TestRunner);
-
 
 
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(

File diff suppressed because it is too large
+ 366 - 320
js/IDE.js


+ 80 - 80
js/JQuery.deploy.js

@@ -353,232 +353,232 @@ return self;}
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_do_',
+'_fadeIn',
 smalltalk.method({
 smalltalk.method({
-selector: 'do:',
-fn: function (aBlock){
+selector: 'fadeIn',
+fn: function (){
 var self=this;
 var self=this;
-smalltalk.send(self, "_elementsDo_", [(function(anElement){return smalltalk.send(aBlock, "_value_", [smalltalk.send((smalltalk.JQuery || JQuery), "_fromElement_", [anElement])]);})]);
+smalltalk.send(self, "_call_", ["fadeIn"]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_focus',
+'_slideDown',
 smalltalk.method({
 smalltalk.method({
-selector: 'focus',
+selector: 'slideDown',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-smalltalk.send(self, "_call_", ["focus"]);
+smalltalk.send(self, "_call_", ["slideDown"]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_show',
+'_fadeInSlow',
 smalltalk.method({
 smalltalk.method({
-selector: 'show',
+selector: 'fadeInSlow',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-smalltalk.send(self, "_call_", ["show"]);
+smalltalk.send(self, "_call_withArgument_", ["fadeIn", "slow"]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_hide',
+'_fadeOut',
 smalltalk.method({
 smalltalk.method({
-selector: 'hide',
+selector: 'fadeOut',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-smalltalk.send(self, "_call_", ["hide"]);
+smalltalk.send(self, "_call_", ["fadeOut"]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_remove',
+'_fadeOutSlow',
 smalltalk.method({
 smalltalk.method({
-selector: 'remove',
+selector: 'fadeOutSlow',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-smalltalk.send(self, "_call_", ["remove"]);
+smalltalk.send(self, "_call_withArgument_", ["fadeOut", "slow"]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_on_do_',
+'_slideUp',
 smalltalk.method({
 smalltalk.method({
-selector: 'on:do:',
-fn: function (anEventString, aBlock){
+selector: 'slideUp',
+fn: function (){
 var self=this;
 var self=this;
-self['@jquery'].bind(anEventString, function(e){aBlock(e, self)});
+smalltalk.send(self, "_call_", ["slideUp"]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_removeEvents_',
+'_fadeOut_do_',
 smalltalk.method({
 smalltalk.method({
-selector: 'removeEvents:',
-fn: function (aString){
+selector: 'fadeOut:do:',
+fn: function (aString, aBlock){
 var self=this;
 var self=this;
-smalltalk.send(self, "_call_withArgument_", ["unbind", aString]);
+self['@jquery'].fadeOut(aString, aBlock);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_initializeWithJQueryObject_',
+'_do_',
 smalltalk.method({
 smalltalk.method({
-selector: 'initializeWithJQueryObject:',
-fn: function (anObject){
+selector: 'do:',
+fn: function (aBlock){
 var self=this;
 var self=this;
-self['@jquery']=anObject;
+smalltalk.send(self, "_elementsDo_", [(function(anElement){return smalltalk.send(aBlock, "_value_", [smalltalk.send((smalltalk.JQuery || JQuery), "_fromElement_", [anElement])]);})]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_call_',
+'_focus',
 smalltalk.method({
 smalltalk.method({
-selector: 'call:',
-fn: function (aString){
+selector: 'focus',
+fn: function (){
 var self=this;
 var self=this;
-return self['@jquery'][aString]();
+smalltalk.send(self, "_call_", ["focus"]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_call_withArgument_',
+'_show',
 smalltalk.method({
 smalltalk.method({
-selector: 'call:withArgument:',
-fn: function (aString, anObject){
+selector: 'show',
+fn: function (){
 var self=this;
 var self=this;
-return self['@jquery'][aString](anObject);
+smalltalk.send(self, "_call_", ["show"]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_elementsDo_',
+'_hide',
 smalltalk.method({
 smalltalk.method({
-selector: 'elementsDo:',
-fn: function (aBlock){
+selector: 'hide',
+fn: function (){
 var self=this;
 var self=this;
-self['@jquery'].each(function(index, element){aBlock(element, self)});
+smalltalk.send(self, "_call_", ["hide"]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_hasClass_',
+'_remove',
 smalltalk.method({
 smalltalk.method({
-selector: 'hasClass:',
-fn: function (aString){
+selector: 'remove',
+fn: function (){
 var self=this;
 var self=this;
-return smalltalk.send(self, "_call_withArgument_", ["hasClass", aString]);
+smalltalk.send(self, "_call_", ["remove"]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_find_',
+'_on_do_',
 smalltalk.method({
 smalltalk.method({
-selector: 'find:',
-fn: function (aSelector){
+selector: 'on:do:',
+fn: function (anEventString, aBlock){
 var self=this;
 var self=this;
-return smalltalk.send(self, "_call_withArgument_", ["find", aSelector]);
+self['@jquery'].bind(anEventString, function(e){aBlock(e, self)});
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_onLoadDo_',
+'_removeEvents_',
 smalltalk.method({
 smalltalk.method({
-selector: 'onLoadDo:',
-fn: function (aBlock){
+selector: 'removeEvents:',
+fn: function (aString){
 var self=this;
 var self=this;
-smalltalk.send(self, "_call_withArgument_", ["load", aBlock]);
+smalltalk.send(self, "_call_withArgument_", ["unbind", aString]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_fadeIn',
+'_onLoadDo_',
 smalltalk.method({
 smalltalk.method({
-selector: 'fadeIn',
-fn: function (){
+selector: 'onLoadDo:',
+fn: function (aBlock){
 var self=this;
 var self=this;
-smalltalk.send(self, "_call_", ["fadeIn"]);
+smalltalk.send(self, "_call_withArgument_", ["load", aBlock]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_slideDown',
+'_initializeWithJQueryObject_',
 smalltalk.method({
 smalltalk.method({
-selector: 'slideDown',
-fn: function (){
+selector: 'initializeWithJQueryObject:',
+fn: function (anObject){
 var self=this;
 var self=this;
-smalltalk.send(self, "_call_", ["slideDown"]);
+self['@jquery']=anObject;
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_fadeInSlow',
+'_call_',
 smalltalk.method({
 smalltalk.method({
-selector: 'fadeInSlow',
-fn: function (){
+selector: 'call:',
+fn: function (aString){
 var self=this;
 var self=this;
-smalltalk.send(self, "_call_withArgument_", ["fadeIn", "slow"]);
+return self['@jquery'][aString]();
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_fadeOut',
+'_call_withArgument_',
 smalltalk.method({
 smalltalk.method({
-selector: 'fadeOut',
-fn: function (){
+selector: 'call:withArgument:',
+fn: function (aString, anObject){
 var self=this;
 var self=this;
-smalltalk.send(self, "_call_", ["fadeOut"]);
+return self['@jquery'][aString](anObject);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_fadeOutSlow',
+'_elementsDo_',
 smalltalk.method({
 smalltalk.method({
-selector: 'fadeOutSlow',
-fn: function (){
+selector: 'elementsDo:',
+fn: function (aBlock){
 var self=this;
 var self=this;
-smalltalk.send(self, "_call_withArgument_", ["fadeOut", "slow"]);
+self['@jquery'].each(function(index, element){aBlock(element, self)});
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_slideUp',
+'_hasClass_',
 smalltalk.method({
 smalltalk.method({
-selector: 'slideUp',
-fn: function (){
+selector: 'hasClass:',
+fn: function (aString){
 var self=this;
 var self=this;
-smalltalk.send(self, "_call_", ["slideUp"]);
+return smalltalk.send(self, "_call_withArgument_", ["hasClass", aString]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
-'_fadeOut_do_',
+'_find_',
 smalltalk.method({
 smalltalk.method({
-selector: 'fadeOut:do:',
-fn: function (aString, aBlock){
+selector: 'find:',
+fn: function (aSelector){
 var self=this;
 var self=this;
-self['@jquery'].fadeOut(aString, aBlock);
+return smalltalk.send(self, "_call_withArgument_", ["find", aSelector]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);

+ 128 - 128
js/JQuery.js

@@ -512,6 +512,118 @@ referencedClasses: []
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
+smalltalk.addMethod(
+'_fadeIn',
+smalltalk.method({
+selector: 'fadeIn',
+category: 'effects',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_call_", ["fadeIn"]);
+return self;},
+args: [],
+source: unescape('fadeIn%0A%20%09self%20call%3A%20%27fadeIn%27'),
+messageSends: ["call:"],
+referencedClasses: []
+}),
+smalltalk.JQuery);
+
+smalltalk.addMethod(
+'_slideDown',
+smalltalk.method({
+selector: 'slideDown',
+category: 'effects',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_call_", ["slideDown"]);
+return self;},
+args: [],
+source: unescape('slideDown%0A%20%09self%20call%3A%20%27slideDown%27'),
+messageSends: ["call:"],
+referencedClasses: []
+}),
+smalltalk.JQuery);
+
+smalltalk.addMethod(
+'_fadeInSlow',
+smalltalk.method({
+selector: 'fadeInSlow',
+category: 'effects',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_call_withArgument_", ["fadeIn", "slow"]);
+return self;},
+args: [],
+source: unescape('fadeInSlow%0A%20%09self%20call%3A%20%27fadeIn%27%20withArgument%3A%20%27slow%27'),
+messageSends: ["call:withArgument:"],
+referencedClasses: []
+}),
+smalltalk.JQuery);
+
+smalltalk.addMethod(
+'_fadeOut',
+smalltalk.method({
+selector: 'fadeOut',
+category: 'effects',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_call_", ["fadeOut"]);
+return self;},
+args: [],
+source: unescape('fadeOut%0A%20%09self%20call%3A%20%27fadeOut%27'),
+messageSends: ["call:"],
+referencedClasses: []
+}),
+smalltalk.JQuery);
+
+smalltalk.addMethod(
+'_fadeOutSlow',
+smalltalk.method({
+selector: 'fadeOutSlow',
+category: 'effects',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_call_withArgument_", ["fadeOut", "slow"]);
+return self;},
+args: [],
+source: unescape('fadeOutSlow%0A%20%09self%20call%3A%20%27fadeOut%27%20withArgument%3A%20%27slow%27'),
+messageSends: ["call:withArgument:"],
+referencedClasses: []
+}),
+smalltalk.JQuery);
+
+smalltalk.addMethod(
+'_slideUp',
+smalltalk.method({
+selector: 'slideUp',
+category: 'effects',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_call_", ["slideUp"]);
+return self;},
+args: [],
+source: unescape('slideUp%0A%20%09self%20call%3A%20%27slideUp%27'),
+messageSends: ["call:"],
+referencedClasses: []
+}),
+smalltalk.JQuery);
+
+smalltalk.addMethod(
+'_fadeOut_do_',
+smalltalk.method({
+selector: 'fadeOut:do:',
+category: 'effects',
+fn: function (aString, aBlock){
+var self=this;
+self['@jquery'].fadeOut(aString, aBlock);
+return self;},
+args: ["aString", "aBlock"],
+source: unescape('fadeOut%3A%20aString%20do%3A%20aBlock%0A%20%20%20%20%3Cself%5B%27@jquery%27%5D.fadeOut%28aString%2C%20aBlock%29%3E'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.JQuery);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_do_',
 '_do_',
 smalltalk.method({
 smalltalk.method({
@@ -624,6 +736,22 @@ referencedClasses: []
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
+smalltalk.addMethod(
+'_onLoadDo_',
+smalltalk.method({
+selector: 'onLoadDo:',
+category: 'events',
+fn: function (aBlock){
+var self=this;
+smalltalk.send(self, "_call_withArgument_", ["load", aBlock]);
+return self;},
+args: ["aBlock"],
+source: unescape('onLoadDo%3A%20aBlock%0A%09%22Bind%20an%20event%20handler%20to%20the%20%27load%27%20JavaScript%20event.%22%0A%09self%20call%3A%20%27load%27%20withArgument%3A%20aBlock'),
+messageSends: ["call:withArgument:"],
+referencedClasses: []
+}),
+smalltalk.JQuery);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_initializeWithJQueryObject_',
 '_initializeWithJQueryObject_',
 smalltalk.method({
 smalltalk.method({
@@ -720,134 +848,6 @@ referencedClasses: []
 }),
 }),
 smalltalk.JQuery);
 smalltalk.JQuery);
 
 
-smalltalk.addMethod(
-'_onLoadDo_',
-smalltalk.method({
-selector: 'onLoadDo:',
-category: 'events',
-fn: function (aBlock){
-var self=this;
-smalltalk.send(self, "_call_withArgument_", ["load", aBlock]);
-return self;},
-args: ["aBlock"],
-source: unescape('onLoadDo%3A%20aBlock%0A%09%22Bind%20an%20event%20handler%20to%20the%20%27load%27%20JavaScript%20event.%22%0A%09self%20call%3A%20%27load%27%20withArgument%3A%20aBlock'),
-messageSends: ["call:withArgument:"],
-referencedClasses: []
-}),
-smalltalk.JQuery);
-
-smalltalk.addMethod(
-'_fadeIn',
-smalltalk.method({
-selector: 'fadeIn',
-category: 'effects',
-fn: function (){
-var self=this;
-smalltalk.send(self, "_call_", ["fadeIn"]);
-return self;},
-args: [],
-source: unescape('fadeIn%0A%20%09self%20call%3A%20%27fadeIn%27'),
-messageSends: ["call:"],
-referencedClasses: []
-}),
-smalltalk.JQuery);
-
-smalltalk.addMethod(
-'_slideDown',
-smalltalk.method({
-selector: 'slideDown',
-category: 'effects',
-fn: function (){
-var self=this;
-smalltalk.send(self, "_call_", ["slideDown"]);
-return self;},
-args: [],
-source: unescape('slideDown%0A%20%09self%20call%3A%20%27slideDown%27'),
-messageSends: ["call:"],
-referencedClasses: []
-}),
-smalltalk.JQuery);
-
-smalltalk.addMethod(
-'_fadeInSlow',
-smalltalk.method({
-selector: 'fadeInSlow',
-category: 'effects',
-fn: function (){
-var self=this;
-smalltalk.send(self, "_call_withArgument_", ["fadeIn", "slow"]);
-return self;},
-args: [],
-source: unescape('fadeInSlow%0A%20%09self%20call%3A%20%27fadeIn%27%20withArgument%3A%20%27slow%27'),
-messageSends: ["call:withArgument:"],
-referencedClasses: []
-}),
-smalltalk.JQuery);
-
-smalltalk.addMethod(
-'_fadeOut',
-smalltalk.method({
-selector: 'fadeOut',
-category: 'effects',
-fn: function (){
-var self=this;
-smalltalk.send(self, "_call_", ["fadeOut"]);
-return self;},
-args: [],
-source: unescape('fadeOut%0A%20%09self%20call%3A%20%27fadeOut%27'),
-messageSends: ["call:"],
-referencedClasses: []
-}),
-smalltalk.JQuery);
-
-smalltalk.addMethod(
-'_fadeOutSlow',
-smalltalk.method({
-selector: 'fadeOutSlow',
-category: 'effects',
-fn: function (){
-var self=this;
-smalltalk.send(self, "_call_withArgument_", ["fadeOut", "slow"]);
-return self;},
-args: [],
-source: unescape('fadeOutSlow%0A%20%09self%20call%3A%20%27fadeOut%27%20withArgument%3A%20%27slow%27'),
-messageSends: ["call:withArgument:"],
-referencedClasses: []
-}),
-smalltalk.JQuery);
-
-smalltalk.addMethod(
-'_slideUp',
-smalltalk.method({
-selector: 'slideUp',
-category: 'effects',
-fn: function (){
-var self=this;
-smalltalk.send(self, "_call_", ["slideUp"]);
-return self;},
-args: [],
-source: unescape('slideUp%0A%20%09self%20call%3A%20%27slideUp%27'),
-messageSends: ["call:"],
-referencedClasses: []
-}),
-smalltalk.JQuery);
-
-smalltalk.addMethod(
-'_fadeOut_do_',
-smalltalk.method({
-selector: 'fadeOut:do:',
-category: 'effects',
-fn: function (aString, aBlock){
-var self=this;
-self['@jquery'].fadeOut(aString, aBlock);
-return self;},
-args: ["aString", "aBlock"],
-source: unescape('fadeOut%3A%20aString%20do%3A%20aBlock%0A%20%20%20%20%3Cself%5B%27@jquery%27%5D.fadeOut%28aString%2C%20aBlock%29%3E'),
-messageSends: [],
-referencedClasses: []
-}),
-smalltalk.JQuery);
-
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_fromString_',
 '_fromString_',

+ 123 - 32
js/Kernel.deploy.js

@@ -636,6 +636,17 @@ return self;}
 }),
 }),
 smalltalk.Smalltalk);
 smalltalk.Smalltalk);
 
 
+smalltalk.addMethod(
+'_modules',
+smalltalk.method({
+selector: 'modules',
+fn: function (){
+var self=this;
+return self.modules.all();
+return self;}
+}),
+smalltalk.Smalltalk);
+
 
 
 smalltalk.Smalltalk.klass.iVarNames = ['current'];
 smalltalk.Smalltalk.klass.iVarNames = ['current'];
 smalltalk.addMethod(
 smalltalk.addMethod(
@@ -650,6 +661,42 @@ return self;}
 smalltalk.Smalltalk.klass);
 smalltalk.Smalltalk.klass);
 
 
 
 
+smalltalk.addClass('Module', smalltalk.Object, [], 'Kernel');
+smalltalk.addMethod(
+'_name',
+smalltalk.method({
+selector: 'name',
+fn: function (){
+var self=this;
+return self.moduleName || nil;
+return self;}
+}),
+smalltalk.Module);
+
+smalltalk.addMethod(
+'_requires',
+smalltalk.method({
+selector: 'requires',
+fn: function (){
+var self=this;
+return self.requires || nil;
+return self;}
+}),
+smalltalk.Module);
+
+smalltalk.addMethod(
+'_name_',
+smalltalk.method({
+selector: 'name:',
+fn: function (aString){
+var self=this;
+return self.moduleName = aString;
+return self;}
+}),
+smalltalk.Module);
+
+
+
 smalltalk.addClass('Behavior', smalltalk.Object, [], 'Kernel');
 smalltalk.addClass('Behavior', smalltalk.Object, [], 'Kernel');
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_new',
 '_new',
@@ -959,18 +1006,7 @@ smalltalk.method({
 selector: 'category',
 selector: 'category',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return self.category;
-return self;}
-}),
-smalltalk.Class);
-
-smalltalk.addMethod(
-'_category_',
-smalltalk.method({
-selector: 'category:',
-fn: function (aString){
-var self=this;
-self.category = aString;
+return (($receiver = smalltalk.send(self, "_module", [])) == nil || $receiver == undefined) ? (function(){return "unclassified";})() : (function(){return smalltalk.send(smalltalk.send(self, "_module", []), "_name", []);})();
 return self;}
 return self;}
 }),
 }),
 smalltalk.Class);
 smalltalk.Class);
@@ -981,7 +1017,7 @@ smalltalk.method({
 selector: 'subclass:instanceVariableNames:',
 selector: 'subclass:instanceVariableNames:',
 fn: function (aString, anotherString){
 fn: function (aString, anotherString){
 var self=this;
 var self=this;
-return smalltalk.send(self, "_subclass_instanceVariableNames_category_", [aString, anotherString, nil]);
+return smalltalk.send(self, "_subclass_instanceVariableNames_module_", [aString, anotherString, nil]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Class);
 smalltalk.Class);
@@ -992,7 +1028,7 @@ smalltalk.method({
 selector: 'subclass:instanceVariableNames:category:',
 selector: 'subclass:instanceVariableNames:category:',
 fn: function (aString, aString2, aString3){
 fn: function (aString, aString2, aString3){
 var self=this;
 var self=this;
-return smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder), "_new", []), "_superclass_subclass_instanceVariableNames_category_", [self, aString, aString2, aString3]);
+return smalltalk.send(self, "_subclass_instanceVariableNames_module_", [aString, aString2, aString3]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Class);
 smalltalk.Class);
@@ -1040,7 +1076,40 @@ smalltalk.method({
 selector: 'subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:',
 selector: 'subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:',
 fn: function (aString, aString2, classVars, pools, aString3){
 fn: function (aString, aString2, classVars, pools, aString3){
 var self=this;
 var self=this;
-return smalltalk.send(self, "_subclass_instanceVariableNames_category_", [aString, aString2, aString3]);
+return smalltalk.send(self, "_subclass_instanceVariableNames_module_", [aString, aString2, aString3]);
+return self;}
+}),
+smalltalk.Class);
+
+smalltalk.addMethod(
+'_module',
+smalltalk.method({
+selector: 'module',
+fn: function (){
+var self=this;
+return self.module;
+return self;}
+}),
+smalltalk.Class);
+
+smalltalk.addMethod(
+'_module_',
+smalltalk.method({
+selector: 'module:',
+fn: function (aModule){
+var self=this;
+self.module = aModule;
+return self;}
+}),
+smalltalk.Class);
+
+smalltalk.addMethod(
+'_subclass_instanceVariableNames_module_',
+smalltalk.method({
+selector: 'subclass:instanceVariableNames:module:',
+fn: function (aString, aString2, aString3){
+var self=this;
+return smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder), "_new", []), "_superclass_subclass_instanceVariableNames_module_", [self, aString, aString2, aString3]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.Class);
 smalltalk.Class);
@@ -2405,7 +2474,7 @@ smalltalk.method({
 selector: 'subclass:instanceVariableNames:',
 selector: 'subclass:instanceVariableNames:',
 fn: function (aString, anotherString){
 fn: function (aString, anotherString){
 var self=this;
 var self=this;
-return smalltalk.send(self, "_subclass_instanceVariableNames_category_", [aString, anotherString, nil]);
+return smalltalk.send(self, "_subclass_instanceVariableNames_module_", [aString, anotherString, nil]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.UndefinedObject);
 smalltalk.UndefinedObject);
@@ -2416,7 +2485,7 @@ smalltalk.method({
 selector: 'subclass:instanceVariableNames:category:',
 selector: 'subclass:instanceVariableNames:category:',
 fn: function (aString, aString2, aString3){
 fn: function (aString, aString2, aString3){
 var self=this;
 var self=this;
-return smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder), "_new", []), "_superclass_subclass_instanceVariableNames_category_", [self, aString, aString2, aString3]);
+return smalltalk.send(self, "_subclass_instanceVariableNames_module_", [aString, aString2, aString3]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.UndefinedObject);
 smalltalk.UndefinedObject);
@@ -2520,6 +2589,17 @@ return self;}
 }),
 }),
 smalltalk.UndefinedObject);
 smalltalk.UndefinedObject);
 
 
+smalltalk.addMethod(
+'_subclass_instanceVariableNames_module_',
+smalltalk.method({
+selector: 'subclass:instanceVariableNames:module:',
+fn: function (aString, aString2, aString3){
+var self=this;
+return smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder), "_new", []), "_superclass_subclass_instanceVariableNames_module_", [self, aString, aString2, aString3]);
+return self;}
+}),
+smalltalk.UndefinedObject);
+
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_new',
 '_new',
@@ -4604,21 +4684,7 @@ smalltalk.method({
 selector: 'superclass:subclass:',
 selector: 'superclass:subclass:',
 fn: function (aClass, aString){
 fn: function (aClass, aString){
 var self=this;
 var self=this;
-smalltalk.send(self, "_superclass_subclass_instanceVariableNames_category_", [aClass, aString, "", nil]);
-return self;}
-}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-'_superclass_subclass_instanceVariableNames_category_',
-smalltalk.method({
-selector: 'superclass:subclass:instanceVariableNames:category:',
-fn: function (aClass, aString, aString2, aString3){
-var self=this;
-var newClass=nil;
-newClass=smalltalk.send(self, "_addSubclassOf_named_instanceVariableNames_", [aClass, aString, smalltalk.send(self, "_instanceVariableNamesFor_", [aString2])]);
-smalltalk.send(self, "_setupClass_", [newClass]);
-smalltalk.send(newClass, "_category_", [(($receiver = aString3) == nil || $receiver == undefined) ? (function(){return "unclassified";})() : $receiver]);
+return smalltalk.send(self, "_superclass_subclass_instanceVariableNames_module_", [aClass, aString, "", nil]);
 return self;}
 return self;}
 }),
 }),
 smalltalk.ClassBuilder);
 smalltalk.ClassBuilder);
@@ -4670,6 +4736,31 @@ return self;}
 }),
 }),
 smalltalk.ClassBuilder);
 smalltalk.ClassBuilder);
 
 
+smalltalk.addMethod(
+'_superclass_subclass_instanceVariableNames_module_',
+smalltalk.method({
+selector: 'superclass:subclass:instanceVariableNames:module:',
+fn: function (aClass, aString, aString2, aString3){
+var self=this;
+var newClass=nil;
+newClass=smalltalk.send(self, "_addSubclassOf_named_instanceVariableNames_module_", [aClass, aString, smalltalk.send(self, "_instanceVariableNamesFor_", [aString2]), (($receiver = aString3) == nil || $receiver == undefined) ? (function(){return "unclassified";})() : $receiver]);
+smalltalk.send(self, "_setupClass_", [newClass]);
+return self;}
+}),
+smalltalk.ClassBuilder);
+
+smalltalk.addMethod(
+'_addSubclassOf_named_instanceVariableNames_module_',
+smalltalk.method({
+selector: 'addSubclassOf:named:instanceVariableNames:module:',
+fn: function (aClass, aString, aCollection, moduleName){
+var self=this;
+smalltalk.addClass(aString, aClass, aCollection, moduleName);
+	    return smalltalk[aString];
+return self;}
+}),
+smalltalk.ClassBuilder);
+
 
 
 
 
 smalltalk.addClass('ClassCategoryReader', smalltalk.Object, ['class', 'category', 'chunkParser'], 'Kernel');
 smalltalk.addClass('ClassCategoryReader', smalltalk.Object, ['class', 'category', 'chunkParser'], 'Kernel');

+ 209 - 78
js/Kernel.js

@@ -9,7 +9,7 @@ var self=this;
 return self == anObject;
 return self == anObject;
 return self;},
 return self;},
 args: ["anObject"],
 args: ["anObject"],
-source: unescape('%3D%20anObject%0A%09%3Creturn%20self%20%3D%3D%20anObject%3E%20'),
+source: unescape('%3D%20anObject%0A%09%3Creturn%20self%20%3D%3D%20anObject%3E'),
 messageSends: [],
 messageSends: [],
 referencedClasses: []
 referencedClasses: []
 }),
 }),
@@ -187,7 +187,7 @@ return self;},
 args: ["anObject"],
 args: ["anObject"],
 source: unescape('-%3E%20anObject%0A%09%5EAssociation%20key%3A%20self%20value%3A%20anObject'),
 source: unescape('-%3E%20anObject%0A%09%5EAssociation%20key%3A%20self%20value%3A%20anObject'),
 messageSends: ["key:value:"],
 messageSends: ["key:value:"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.Association]
 }),
 }),
 smalltalk.Object);
 smalltalk.Object);
 
 
@@ -377,7 +377,7 @@ var self=this;
 try{aBlock()} catch(e) {anotherBlock(e)};
 try{aBlock()} catch(e) {anotherBlock(e)};
 return self;},
 return self;},
 args: ["aBlock", "anotherBlock"],
 args: ["aBlock", "anotherBlock"],
-source: unescape('try%3A%20aBlock%20catch%3A%20anotherBlock%0A%09%3Ctry%7BaBlock%28%29%7D%20catch%28e%29%20%7BanotherBlock%28e%29%7D%3E%20'),
+source: unescape('try%3A%20aBlock%20catch%3A%20anotherBlock%0A%09%3Ctry%7BaBlock%28%29%7D%20catch%28e%29%20%7BanotherBlock%28e%29%7D%3E'),
 messageSends: [],
 messageSends: [],
 referencedClasses: []
 referencedClasses: []
 }),
 }),
@@ -683,7 +683,7 @@ return self;},
 args: ["aMessage"],
 args: ["aMessage"],
 source: unescape('doesNotUnderstand%3A%20aMessage%0A%09MessageNotUnderstood%20new%0A%09%09receiver%3A%20self%3B%0A%09%09message%3A%20aMessage%3B%0A%09%09signal'),
 source: unescape('doesNotUnderstand%3A%20aMessage%0A%09MessageNotUnderstood%20new%0A%09%09receiver%3A%20self%3B%0A%09%09message%3A%20aMessage%3B%0A%09%09signal'),
 messageSends: ["receiver:", "message:", "signal", "new"],
 messageSends: ["receiver:", "message:", "signal", "new"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.MessageNotUnderstood]
 }),
 }),
 smalltalk.Object);
 smalltalk.Object);
 
 
@@ -750,7 +750,7 @@ smalltalk.send((typeof console == 'undefined' ? nil : console), "_log_", [smallt
 return result;
 return result;
 return self;},
 return self;},
 args: ["aString", "aBlock"],
 args: ["aString", "aBlock"],
-source: unescape('log%3A%20aString%20block%3A%20aBlock%0A%0A%09%7C%20result%20%7C%0A%09console%20log%3A%20%20aString%2C%20%20%27%20time%3A%20%27%2C%20%28Date%20millisecondsToRun%3A%20%5Bresult%20%3A%3D%20aBlock%20value%5D%29%20printString.%0A%09%5Eresult%0A%0A'),
+source: unescape('log%3A%20aString%20block%3A%20aBlock%0A%0A%09%7C%20result%20%7C%0A%09console%20log%3A%20%20aString%2C%20%20%27%20time%3A%20%27%2C%20%28Date%20millisecondsToRun%3A%20%5Bresult%20%3A%3D%20aBlock%20value%5D%29%20printString.%0A%09%5Eresult'),
 messageSends: ["log:", unescape("%2C"), "printString", "millisecondsToRun:", "value"],
 messageSends: ["log:", unescape("%2C"), "printString", "millisecondsToRun:", "value"],
 referencedClasses: [smalltalk.Date]
 referencedClasses: [smalltalk.Date]
 }),
 }),
@@ -900,12 +900,28 @@ code=smalltalk.send((smalltalk.String || String), "_streamContents_", [(function
 return smalltalk.send(smalltalk.send((smalltalk.Error || Error), "_new", []), "_messageText_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("Parse error on line ", "__comma", [row]), "__comma", [" column "]), "__comma", [col]), "__comma", [" : "]), "__comma", [message]), "__comma", [unescape("%20Below%20is%20code%20with%20line%20numbers%20and%20%3D%3D%3D%3E%20marker%20inserted%3A")]), "__comma", [smalltalk.send((smalltalk.String || String), "_lf", [])]), "__comma", [code])]);
 return smalltalk.send(smalltalk.send((smalltalk.Error || Error), "_new", []), "_messageText_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("Parse error on line ", "__comma", [row]), "__comma", [" column "]), "__comma", [col]), "__comma", [" : "]), "__comma", [message]), "__comma", [unescape("%20Below%20is%20code%20with%20line%20numbers%20and%20%3D%3D%3D%3E%20marker%20inserted%3A")]), "__comma", [smalltalk.send((smalltalk.String || String), "_lf", [])]), "__comma", [code])]);
 return self;},
 return self;},
 args: ["anException", "aString"],
 args: ["anException", "aString"],
-source: unescape('parseError%3A%20anException%20parsing%3A%20aString%0A%09%7C%20row%20col%20message%20lines%20badLine%20code%20%7C%0A%09%3Crow%20%3D%20anException.line%3B%0A%09col%20%3D%20anException.column%3B%0A%09message%20%3D%20anException.message%3B%3E.%0A%09lines%20%3A%3D%20aString%20lines.%0A%09badLine%20%3A%3D%20lines%20at%3A%20row.%0A%09badLine%20%3A%3D%20%28badLine%20copyFrom%3A%201%20to%3A%20col%20-%201%29%2C%20%27%20%3D%3D%3D%3E%27%2C%20%28badLine%20copyFrom%3A%20%20col%20to%3A%20badLine%20size%29.%0A%09lines%20at%3A%20row%20put%3A%20badLine.%0A%09code%20%3A%3D%20String%20streamContents%3A%20%5B%3As%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20lines%20withIndexDo%3A%20%5B%3Al%20%3Ai%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20s%20nextPutAll%3A%20i%20asString%2C%20%27%3A%20%27%2C%20l%2C%20String%20lf%5D%5D.%0A%09%5E%20Error%20new%20messageText%3A%20%28%27Parse%20error%20on%20line%20%27%20%2C%20row%20%2C%20%27%20column%20%27%20%2C%20col%20%2C%20%27%20%3A%20%27%20%2C%20message%20%2C%20%27%20Below%20is%20code%20with%20line%20numbers%20and%20%3D%3D%3D%3E%20marker%20inserted%3A%27%20%2C%20String%20lf%2C%20code%29'),
+source: unescape('parseError%3A%20anException%20parsing%3A%20aString%0A%09%7C%20row%20col%20message%20lines%20badLine%20code%20%7C%0A%09%3Crow%20%3D%20anException.line%3B%0A%09col%20%3D%20anException.column%3B%0A%09message%20%3D%20anException.message%3B%3E.%0A%09lines%20%3A%3D%20aString%20lines.%0A%09badLine%20%3A%3D%20lines%20at%3A%20row.%0A%09badLine%20%3A%3D%20%28badLine%20copyFrom%3A%201%20to%3A%20col%20-%201%29%2C%20%27%20%3D%3D%3D%3E%27%2C%20%28badLine%20copyFrom%3A%20%20col%20to%3A%20badLine%20size%29.%0A%09lines%20at%3A%20row%20put%3A%20badLine.%0A%09code%20%3A%3D%20String%20streamContents%3A%20%5B%3As%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20lines%20withIndexDo%3A%20%5B%3Al%20%3Ai%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20s%20nextPutAll%3A%20i%20asString%2C%20%27%3A%20%27%2C%20l%2C%20String%20lf%5D%5D.%0A%09%5E%20Error%20new%20messageText%3A%20%28%27Parse%20error%20on%20line%20%27%20%2C%20row%20%2C%20%27%20column%20%27%20%2C%20col%20%2C%20%27%20%3A%20%27%20%2C%20message%20%2C%20%27%20Below%20is%20code%20with%20line%20numbers%20and%20%3D%3D%3D%3E%20marker%20inserted%3A%27%20%2C%20String%20lf%2C%20code%29'),
 messageSends: ["lines", "at:", unescape("%2C"), "copyFrom:to:", unescape("-"), "size", "at:put:", "streamContents:", "withIndexDo:", "nextPutAll:", "asString", "lf", "messageText:", "new"],
 messageSends: ["lines", "at:", unescape("%2C"), "copyFrom:to:", unescape("-"), "size", "at:put:", "streamContents:", "withIndexDo:", "nextPutAll:", "asString", "lf", "messageText:", "new"],
 referencedClasses: [smalltalk.String,smalltalk.Error]
 referencedClasses: [smalltalk.String,smalltalk.Error]
 }),
 }),
 smalltalk.Smalltalk);
 smalltalk.Smalltalk);
 
 
+smalltalk.addMethod(
+'_modules',
+smalltalk.method({
+selector: 'modules',
+category: 'accessing',
+fn: function (){
+var self=this;
+return self.modules.all();
+return self;},
+args: [],
+source: unescape('modules%0A%09%3Creturn%20self.modules.all%28%29%3E'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.Smalltalk);
+
 
 
 smalltalk.Smalltalk.klass.iVarNames = ['current'];
 smalltalk.Smalltalk.klass.iVarNames = ['current'];
 smalltalk.addMethod(
 smalltalk.addMethod(
@@ -925,6 +941,57 @@ referencedClasses: []
 smalltalk.Smalltalk.klass);
 smalltalk.Smalltalk.klass);
 
 
 
 
+smalltalk.addClass('Module', smalltalk.Object, [], 'Kernel');
+smalltalk.addMethod(
+'_name',
+smalltalk.method({
+selector: 'name',
+category: 'accessing',
+fn: function (){
+var self=this;
+return self.moduleName || nil;
+return self;},
+args: [],
+source: unescape('name%0A%09%3Creturn%20self.moduleName%20%7C%7C%20nil%3E'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.Module);
+
+smalltalk.addMethod(
+'_requires',
+smalltalk.method({
+selector: 'requires',
+category: 'accessing',
+fn: function (){
+var self=this;
+return self.requires || nil;
+return self;},
+args: [],
+source: unescape('requires%0A%09%3Creturn%20self.requires%20%7C%7C%20nil%3E'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.Module);
+
+smalltalk.addMethod(
+'_name_',
+smalltalk.method({
+selector: 'name:',
+category: 'accessing',
+fn: function (aString){
+var self=this;
+return self.moduleName = aString;
+return self;},
+args: ["aString"],
+source: unescape('name%3A%20aString%0A%09%3Creturn%20self.moduleName%20%3D%20aString%3E'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.Module);
+
+
+
 smalltalk.addClass('Behavior', smalltalk.Object, [], 'Kernel');
 smalltalk.addClass('Behavior', smalltalk.Object, [], 'Kernel');
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_new',
 '_new',
@@ -1092,7 +1159,7 @@ return self;},
 args: ["aString"],
 args: ["aString"],
 source: unescape('methodsFor%3A%20aString%0A%09%5EClassCategoryReader%20new%0A%09%20%20%20%20class%3A%20self%20category%3A%20aString%3B%0A%09%20%20%20%20yourself'),
 source: unescape('methodsFor%3A%20aString%0A%09%5EClassCategoryReader%20new%0A%09%20%20%20%20class%3A%20self%20category%3A%20aString%3B%0A%09%20%20%20%20yourself'),
 messageSends: ["class:category:", "yourself", "new"],
 messageSends: ["class:category:", "yourself", "new"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.ClassCategoryReader]
 }),
 }),
 smalltalk.Behavior);
 smalltalk.Behavior);
 
 
@@ -1172,7 +1239,7 @@ return self;},
 args: [],
 args: [],
 source: unescape('commentStamp%0A%20%20%20%20%5EClassCommentReader%20new%0A%09class%3A%20self%3B%0A%09yourself'),
 source: unescape('commentStamp%0A%20%20%20%20%5EClassCommentReader%20new%0A%09class%3A%20self%3B%0A%09yourself'),
 messageSends: ["class:", "yourself", "new"],
 messageSends: ["class:", "yourself", "new"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.ClassCommentReader]
 }),
 }),
 smalltalk.Behavior);
 smalltalk.Behavior);
 
 
@@ -1244,7 +1311,7 @@ return self;},
 args: ["aBlock"],
 args: ["aBlock"],
 source: unescape('protocolsDo%3A%20aBlock%0A%09%22Execute%20aBlock%20for%20each%20method%20category%20with%0A%09its%20collection%20of%20methods%20in%20the%20sort%20order%20of%20category%20name.%22%0A%0A%09%7C%20methodsByCategory%20%7C%0A%09methodsByCategory%20%3A%3D%20Dictionary%20new.%0A%09self%20methodDictionary%20values%20do%3A%20%5B%3Am%20%7C%0A%09%09%28methodsByCategory%20at%3A%20m%20category%20ifAbsentPut%3A%20%5BArray%20new%5D%29%0A%20%09%09%09add%3A%20m%5D.%20%0A%09self%20protocols%20do%3A%20%5B%3Acategory%20%7C%0A%09%09aBlock%20value%3A%20category%20value%3A%20%28methodsByCategory%20at%3A%20category%29%5D'),
 source: unescape('protocolsDo%3A%20aBlock%0A%09%22Execute%20aBlock%20for%20each%20method%20category%20with%0A%09its%20collection%20of%20methods%20in%20the%20sort%20order%20of%20category%20name.%22%0A%0A%09%7C%20methodsByCategory%20%7C%0A%09methodsByCategory%20%3A%3D%20Dictionary%20new.%0A%09self%20methodDictionary%20values%20do%3A%20%5B%3Am%20%7C%0A%09%09%28methodsByCategory%20at%3A%20m%20category%20ifAbsentPut%3A%20%5BArray%20new%5D%29%0A%20%09%09%09add%3A%20m%5D.%20%0A%09self%20protocols%20do%3A%20%5B%3Acategory%20%7C%0A%09%09aBlock%20value%3A%20category%20value%3A%20%28methodsByCategory%20at%3A%20category%29%5D'),
 messageSends: ["new", "do:", "values", "methodDictionary", "add:", "at:ifAbsentPut:", "category", "protocols", "value:value:", "at:"],
 messageSends: ["new", "do:", "values", "methodDictionary", "add:", "at:ifAbsentPut:", "category", "protocols", "value:value:", "at:"],
-referencedClasses: [smalltalk.nil,smalltalk.Array]
+referencedClasses: [smalltalk.Dictionary,smalltalk.Array]
 }),
 }),
 smalltalk.Behavior);
 smalltalk.Behavior);
 
 
@@ -1346,7 +1413,7 @@ return self;},
 args: ["aString", "anotherString"],
 args: ["aString", "anotherString"],
 source: unescape('compile%3A%20aString%20category%3A%20anotherString%0A%09%7C%20method%20%7C%0A%09method%20%3A%3D%20Compiler%20new%20load%3A%20aString%20forClass%3A%20self.%0A%09method%20category%3A%20anotherString.%0A%09self%20addCompiledMethod%3A%20method'),
 source: unescape('compile%3A%20aString%20category%3A%20anotherString%0A%09%7C%20method%20%7C%0A%09method%20%3A%3D%20Compiler%20new%20load%3A%20aString%20forClass%3A%20self.%0A%09method%20category%3A%20anotherString.%0A%09self%20addCompiledMethod%3A%20method'),
 messageSends: ["load:forClass:", "new", "category:", "addCompiledMethod:"],
 messageSends: ["load:forClass:", "new", "category:", "addCompiledMethod:"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.Compiler]
 }),
 }),
 smalltalk.Behavior);
 smalltalk.Behavior);
 
 
@@ -1360,27 +1427,11 @@ selector: 'category',
 category: 'accessing',
 category: 'accessing',
 fn: function (){
 fn: function (){
 var self=this;
 var self=this;
-return self.category;
+return (($receiver = smalltalk.send(self, "_module", [])) == nil || $receiver == undefined) ? (function(){return "unclassified";})() : (function(){return smalltalk.send(smalltalk.send(self, "_module", []), "_name", []);})();
 return self;},
 return self;},
 args: [],
 args: [],
-source: unescape('category%0A%09%3Creturn%20self.category%3E'),
-messageSends: [],
-referencedClasses: []
-}),
-smalltalk.Class);
-
-smalltalk.addMethod(
-'_category_',
-smalltalk.method({
-selector: 'category:',
-category: 'accessing',
-fn: function (aString){
-var self=this;
-self.category = aString;
-return self;},
-args: ["aString"],
-source: unescape('category%3A%20aString%0A%09%3Cself.category%20%3D%20aString%3E'),
-messageSends: [],
+source: unescape('category%0A%09%5Eself%20module%20ifNil%3A%20%5B%27unclassified%27%5D%20ifNotNil%3A%20%5Bself%20module%20name%5D'),
+messageSends: ["ifNil:ifNotNil:", "module", "name"],
 referencedClasses: []
 referencedClasses: []
 }),
 }),
 smalltalk.Class);
 smalltalk.Class);
@@ -1392,11 +1443,11 @@ selector: 'subclass:instanceVariableNames:',
 category: 'class creation',
 category: 'class creation',
 fn: function (aString, anotherString){
 fn: function (aString, anotherString){
 var self=this;
 var self=this;
-return smalltalk.send(self, "_subclass_instanceVariableNames_category_", [aString, anotherString, nil]);
+return smalltalk.send(self, "_subclass_instanceVariableNames_module_", [aString, anotherString, nil]);
 return self;},
 return self;},
 args: ["aString", "anotherString"],
 args: ["aString", "anotherString"],
-source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%20category%3A%20nil'),
-messageSends: ["subclass:instanceVariableNames:category:"],
+source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%0A%09%22Kept%20for%20compatibility.%22%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%20module%3A%20nil'),
+messageSends: ["subclass:instanceVariableNames:module:"],
 referencedClasses: []
 referencedClasses: []
 }),
 }),
 smalltalk.Class);
 smalltalk.Class);
@@ -1408,12 +1459,12 @@ selector: 'subclass:instanceVariableNames:category:',
 category: 'class creation',
 category: 'class creation',
 fn: function (aString, aString2, aString3){
 fn: function (aString, aString2, aString3){
 var self=this;
 var self=this;
-return smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder), "_new", []), "_superclass_subclass_instanceVariableNames_category_", [self, aString, aString2, aString3]);
+return smalltalk.send(self, "_subclass_instanceVariableNames_module_", [aString, aString2, aString3]);
 return self;},
 return self;},
 args: ["aString", "aString2", "aString3"],
 args: ["aString", "aString2", "aString3"],
-source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20category%3A%20aString3%0A%09%5EClassBuilder%20new%0A%09%20%20%20%20superclass%3A%20self%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20category%3A%20aString3'),
-messageSends: ["superclass:subclass:instanceVariableNames:category:", "new"],
-referencedClasses: [smalltalk.nil]
+source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20category%3A%20aString3%0A%09%22Kept%20for%20compatibility.%22%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20module%3A%20aString3'),
+messageSends: ["subclass:instanceVariableNames:module:"],
+referencedClasses: []
 }),
 }),
 smalltalk.Class);
 smalltalk.Class);
 
 
@@ -1476,15 +1527,63 @@ selector: 'subclass:instanceVariableNames:classVariableNames:poolDictionaries:ca
 category: 'class creation',
 category: 'class creation',
 fn: function (aString, aString2, classVars, pools, aString3){
 fn: function (aString, aString2, classVars, pools, aString3){
 var self=this;
 var self=this;
-return smalltalk.send(self, "_subclass_instanceVariableNames_category_", [aString, aString2, aString3]);
+return smalltalk.send(self, "_subclass_instanceVariableNames_module_", [aString, aString2, aString3]);
 return self;},
 return self;},
 args: ["aString", "aString2", "classVars", "pools", "aString3"],
 args: ["aString", "aString2", "classVars", "pools", "aString3"],
-source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20classVariableNames%3A%20classVars%20poolDictionaries%3A%20pools%20category%3A%20aString3%0A%09%22Just%20ignore%20class%20variables%20and%20pools.%20Added%20for%20compatibility.%22%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20category%3A%20aString3'),
-messageSends: ["subclass:instanceVariableNames:category:"],
+source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20classVariableNames%3A%20classVars%20poolDictionaries%3A%20pools%20category%3A%20aString3%0A%09%22Just%20ignore%20class%20variables%20and%20pools.%20Added%20for%20compatibility.%22%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20module%3A%20aString3'),
+messageSends: ["subclass:instanceVariableNames:module:"],
+referencedClasses: []
+}),
+smalltalk.Class);
+
+smalltalk.addMethod(
+'_module',
+smalltalk.method({
+selector: 'module',
+category: 'accessing',
+fn: function (){
+var self=this;
+return self.module;
+return self;},
+args: [],
+source: unescape('module%0A%09%3Creturn%20self.module%3E'),
+messageSends: [],
 referencedClasses: []
 referencedClasses: []
 }),
 }),
 smalltalk.Class);
 smalltalk.Class);
 
 
+smalltalk.addMethod(
+'_module_',
+smalltalk.method({
+selector: 'module:',
+category: 'accessing',
+fn: function (aModule){
+var self=this;
+self.module = aModule;
+return self;},
+args: ["aModule"],
+source: unescape('module%3A%20aModule%0A%09%3Cself.module%20%3D%20aModule%3E'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.Class);
+
+smalltalk.addMethod(
+'_subclass_instanceVariableNames_module_',
+smalltalk.method({
+selector: 'subclass:instanceVariableNames:module:',
+category: 'class creation',
+fn: function (aString, aString2, aString3){
+var self=this;
+return smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder), "_new", []), "_superclass_subclass_instanceVariableNames_module_", [self, aString, aString2, aString3]);
+return self;},
+args: ["aString", "aString2", "aString3"],
+source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20module%3A%20aString3%0A%09%5EClassBuilder%20new%0A%09%20%20%20%20superclass%3A%20self%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20module%3A%20aString3'),
+messageSends: ["superclass:subclass:instanceVariableNames:module:", "new"],
+referencedClasses: [smalltalk.ClassBuilder]
+}),
+smalltalk.Class);
+
 
 
 
 
 smalltalk.addClass('Metaclass', smalltalk.Behavior, [], 'Kernel');
 smalltalk.addClass('Metaclass', smalltalk.Behavior, [], 'Kernel');
@@ -1516,7 +1615,7 @@ return self;},
 args: ["aCollection"],
 args: ["aCollection"],
 source: unescape('instanceVariableNames%3A%20aCollection%0A%09ClassBuilder%20new%0A%09%20%20%20%20class%3A%20self%20instanceVariableNames%3A%20aCollection'),
 source: unescape('instanceVariableNames%3A%20aCollection%0A%09ClassBuilder%20new%0A%09%20%20%20%20class%3A%20self%20instanceVariableNames%3A%20aCollection'),
 messageSends: ["class:instanceVariableNames:", "new"],
 messageSends: ["class:instanceVariableNames:", "new"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.ClassBuilder]
 }),
 }),
 smalltalk.Metaclass);
 smalltalk.Metaclass);
 
 
@@ -2096,7 +2195,7 @@ return self;},
 args: [],
 args: [],
 source: unescape('atRandom%0A%20%20%20%20%5E%28Random%20new%20next%20*%20self%29%20truncated%20+%201'),
 source: unescape('atRandom%0A%20%20%20%20%5E%28Random%20new%20next%20*%20self%29%20truncated%20+%201'),
 messageSends: [unescape("+"), "truncated", unescape("*"), "next", "new"],
 messageSends: [unescape("+"), "truncated", unescape("*"), "next", "new"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.Random]
 }),
 }),
 smalltalk.Number);
 smalltalk.Number);
 
 
@@ -2112,7 +2211,7 @@ return self;},
 args: ["aNumber"],
 args: ["aNumber"],
 source: unescape('@%20aNumber%0A%09%5EPoint%20x%3A%20self%20y%3A%20aNumber'),
 source: unescape('@%20aNumber%0A%09%5EPoint%20x%3A%20self%20y%3A%20aNumber'),
 messageSends: ["x:y:"],
 messageSends: ["x:y:"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.Point]
 }),
 }),
 smalltalk.Number);
 smalltalk.Number);
 
 
@@ -2128,7 +2227,7 @@ return self;},
 args: [],
 args: [],
 source: unescape('asPoint%0A%09%5EPoint%20x%3A%20self%20y%3A%20self'),
 source: unescape('asPoint%0A%09%5EPoint%20x%3A%20self%20y%3A%20self'),
 messageSends: ["x:y:"],
 messageSends: ["x:y:"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.Point]
 }),
 }),
 smalltalk.Number);
 smalltalk.Number);
 
 
@@ -3437,11 +3536,11 @@ selector: 'subclass:instanceVariableNames:',
 category: 'class creation',
 category: 'class creation',
 fn: function (aString, anotherString){
 fn: function (aString, anotherString){
 var self=this;
 var self=this;
-return smalltalk.send(self, "_subclass_instanceVariableNames_category_", [aString, anotherString, nil]);
+return smalltalk.send(self, "_subclass_instanceVariableNames_module_", [aString, anotherString, nil]);
 return self;},
 return self;},
 args: ["aString", "anotherString"],
 args: ["aString", "anotherString"],
-source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%20category%3A%20nil'),
-messageSends: ["subclass:instanceVariableNames:category:"],
+source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%20module%3A%20nil'),
+messageSends: ["subclass:instanceVariableNames:module:"],
 referencedClasses: []
 referencedClasses: []
 }),
 }),
 smalltalk.UndefinedObject);
 smalltalk.UndefinedObject);
@@ -3453,12 +3552,12 @@ selector: 'subclass:instanceVariableNames:category:',
 category: 'class creation',
 category: 'class creation',
 fn: function (aString, aString2, aString3){
 fn: function (aString, aString2, aString3){
 var self=this;
 var self=this;
-return smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder), "_new", []), "_superclass_subclass_instanceVariableNames_category_", [self, aString, aString2, aString3]);
+return smalltalk.send(self, "_subclass_instanceVariableNames_module_", [aString, aString2, aString3]);
 return self;},
 return self;},
 args: ["aString", "aString2", "aString3"],
 args: ["aString", "aString2", "aString3"],
-source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20category%3A%20aString3%0A%09%5EClassBuilder%20new%0A%09%20%20%20%20superclass%3A%20self%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20category%3A%20aString3'),
-messageSends: ["superclass:subclass:instanceVariableNames:category:", "new"],
-referencedClasses: [smalltalk.nil]
+source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20category%3A%20aString3%0A%09%22Kept%20for%20compatibility.%22%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20module%3A%20aString3'),
+messageSends: ["subclass:instanceVariableNames:module:"],
+referencedClasses: []
 }),
 }),
 smalltalk.UndefinedObject);
 smalltalk.UndefinedObject);
 
 
@@ -3606,6 +3705,22 @@ referencedClasses: []
 }),
 }),
 smalltalk.UndefinedObject);
 smalltalk.UndefinedObject);
 
 
+smalltalk.addMethod(
+'_subclass_instanceVariableNames_module_',
+smalltalk.method({
+selector: 'subclass:instanceVariableNames:module:',
+category: 'class creation',
+fn: function (aString, aString2, aString3){
+var self=this;
+return smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder), "_new", []), "_superclass_subclass_instanceVariableNames_module_", [self, aString, aString2, aString3]);
+return self;},
+args: ["aString", "aString2", "aString3"],
+source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20module%3A%20aString3%0A%09%5EClassBuilder%20new%0A%09%20%20%20%20superclass%3A%20self%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20module%3A%20aString3'),
+messageSends: ["superclass:subclass:instanceVariableNames:module:", "new"],
+referencedClasses: [smalltalk.ClassBuilder]
+}),
+smalltalk.UndefinedObject);
+
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_new',
 '_new',
@@ -4049,7 +4164,7 @@ return self;},
 args: [],
 args: [],
 source: unescape('asSet%0A%09%5ESet%20withAll%3A%20self'),
 source: unescape('asSet%0A%09%5ESet%20withAll%3A%20self'),
 messageSends: ["withAll:"],
 messageSends: ["withAll:"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.Set]
 }),
 }),
 smalltalk.Collection);
 smalltalk.Collection);
 
 
@@ -4066,7 +4181,7 @@ return self;},
 args: [],
 args: [],
 source: unescape('streamClass%0A%09%20%20%20%20%5EStream'),
 source: unescape('streamClass%0A%09%20%20%20%20%5EStream'),
 messageSends: [],
 messageSends: [],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.Stream]
 }),
 }),
 smalltalk.Collection.klass);
 smalltalk.Collection.klass);
 
 
@@ -5239,7 +5354,7 @@ return self;},
 args: [],
 args: [],
 source: unescape('streamClass%0A%09%20%20%20%20%5EStringStream'),
 source: unescape('streamClass%0A%09%20%20%20%20%5EStringStream'),
 messageSends: [],
 messageSends: [],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.StringStream]
 }),
 }),
 smalltalk.String.klass);
 smalltalk.String.klass);
 
 
@@ -6561,30 +6676,11 @@ selector: 'superclass:subclass:',
 category: 'class creation',
 category: 'class creation',
 fn: function (aClass, aString){
 fn: function (aClass, aString){
 var self=this;
 var self=this;
-smalltalk.send(self, "_superclass_subclass_instanceVariableNames_category_", [aClass, aString, "", nil]);
+return smalltalk.send(self, "_superclass_subclass_instanceVariableNames_module_", [aClass, aString, "", nil]);
 return self;},
 return self;},
 args: ["aClass", "aString"],
 args: ["aClass", "aString"],
-source: unescape('superclass%3A%20aClass%20subclass%3A%20aString%0A%09self%20superclass%3A%20aClass%20subclass%3A%20aString%20instanceVariableNames%3A%20%27%27%20category%3A%20nil'),
-messageSends: ["superclass:subclass:instanceVariableNames:category:"],
-referencedClasses: []
-}),
-smalltalk.ClassBuilder);
-
-smalltalk.addMethod(
-'_superclass_subclass_instanceVariableNames_category_',
-smalltalk.method({
-selector: 'superclass:subclass:instanceVariableNames:category:',
-category: 'class creation',
-fn: function (aClass, aString, aString2, aString3){
-var self=this;
-var newClass=nil;
-newClass=smalltalk.send(self, "_addSubclassOf_named_instanceVariableNames_", [aClass, aString, smalltalk.send(self, "_instanceVariableNamesFor_", [aString2])]);
-smalltalk.send(self, "_setupClass_", [newClass]);
-smalltalk.send(newClass, "_category_", [(($receiver = aString3) == nil || $receiver == undefined) ? (function(){return "unclassified";})() : $receiver]);
-return self;},
-args: ["aClass", "aString", "aString2", "aString3"],
-source: unescape('superclass%3A%20aClass%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20category%3A%20aString3%0A%09%7C%20newClass%20%7C%0A%09newClass%20%3A%3D%20self%20addSubclassOf%3A%20aClass%20named%3A%20aString%20instanceVariableNames%3A%20%28self%20instanceVariableNamesFor%3A%20aString2%29.%0A%09self%20setupClass%3A%20newClass.%0A%09newClass%20category%3A%20%28aString3%20ifNil%3A%20%5B%27unclassified%27%5D%29'),
-messageSends: ["addSubclassOf:named:instanceVariableNames:", "instanceVariableNamesFor:", "setupClass:", "category:", "ifNil:"],
+source: unescape('superclass%3A%20aClass%20subclass%3A%20aString%0A%09%5Eself%20superclass%3A%20aClass%20subclass%3A%20aString%20instanceVariableNames%3A%20%27%27%20module%3A%20nil'),
+messageSends: ["superclass:subclass:instanceVariableNames:module:"],
 referencedClasses: []
 referencedClasses: []
 }),
 }),
 smalltalk.ClassBuilder);
 smalltalk.ClassBuilder);
@@ -6656,6 +6752,41 @@ referencedClasses: []
 }),
 }),
 smalltalk.ClassBuilder);
 smalltalk.ClassBuilder);
 
 
+smalltalk.addMethod(
+'_superclass_subclass_instanceVariableNames_module_',
+smalltalk.method({
+selector: 'superclass:subclass:instanceVariableNames:module:',
+category: 'class creation',
+fn: function (aClass, aString, aString2, aString3){
+var self=this;
+var newClass=nil;
+newClass=smalltalk.send(self, "_addSubclassOf_named_instanceVariableNames_module_", [aClass, aString, smalltalk.send(self, "_instanceVariableNamesFor_", [aString2]), (($receiver = aString3) == nil || $receiver == undefined) ? (function(){return "unclassified";})() : $receiver]);
+smalltalk.send(self, "_setupClass_", [newClass]);
+return self;},
+args: ["aClass", "aString", "aString2", "aString3"],
+source: unescape('superclass%3A%20aClass%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20module%3A%20aString3%0A%09%7C%20newClass%20%7C%0A%09newClass%20%3A%3D%20self%20addSubclassOf%3A%20aClass%0A%09%09%09%09named%3A%20aString%20instanceVariableNames%3A%20%28self%20instanceVariableNamesFor%3A%20aString2%29%0A%09%09%09%09module%3A%20%28aString3%20ifNil%3A%20%5B%27unclassified%27%5D%29.%0A%09self%20setupClass%3A%20newClass'),
+messageSends: ["addSubclassOf:named:instanceVariableNames:module:", "instanceVariableNamesFor:", "ifNil:", "setupClass:"],
+referencedClasses: []
+}),
+smalltalk.ClassBuilder);
+
+smalltalk.addMethod(
+'_addSubclassOf_named_instanceVariableNames_module_',
+smalltalk.method({
+selector: 'addSubclassOf:named:instanceVariableNames:module:',
+category: 'private',
+fn: function (aClass, aString, aCollection, moduleName){
+var self=this;
+smalltalk.addClass(aString, aClass, aCollection, moduleName);
+	    return smalltalk[aString];
+return self;},
+args: ["aClass", "aString", "aCollection", "moduleName"],
+source: unescape('addSubclassOf%3A%20aClass%20named%3A%20aString%20instanceVariableNames%3A%20aCollection%20module%3A%20moduleName%0A%09%3Csmalltalk.addClass%28aString%2C%20aClass%2C%20aCollection%2C%20moduleName%29%3B%0A%09%20%20%20%20return%20smalltalk%5BaString%5D%3E'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.ClassBuilder);
+
 
 
 
 
 smalltalk.addClass('ClassCategoryReader', smalltalk.Object, ['class', 'category', 'chunkParser'], 'Kernel');
 smalltalk.addClass('ClassCategoryReader', smalltalk.Object, ['class', 'category', 'chunkParser'], 'Kernel');
@@ -6672,7 +6803,7 @@ return self;},
 args: [],
 args: [],
 source: unescape('initialize%0A%09super%20initialize.%0A%09chunkParser%20%3A%3D%20ChunkParser%20new.'),
 source: unescape('initialize%0A%09super%20initialize.%0A%09chunkParser%20%3A%3D%20ChunkParser%20new.'),
 messageSends: ["initialize", "new"],
 messageSends: ["initialize", "new"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.ChunkParser]
 }),
 }),
 smalltalk.ClassCategoryReader);
 smalltalk.ClassCategoryReader);
 
 
@@ -6725,7 +6856,7 @@ return self;},
 args: ["aString"],
 args: ["aString"],
 source: unescape('compileMethod%3A%20aString%0A%09%7C%20method%20%7C%0A%09method%20%3A%3D%20Compiler%20new%20load%3A%20aString%20forClass%3A%20class.%0A%09method%20category%3A%20category.%0A%09class%20addCompiledMethod%3A%20method'),
 source: unescape('compileMethod%3A%20aString%0A%09%7C%20method%20%7C%0A%09method%20%3A%3D%20Compiler%20new%20load%3A%20aString%20forClass%3A%20class.%0A%09method%20category%3A%20category.%0A%09class%20addCompiledMethod%3A%20method'),
 messageSends: ["load:forClass:", "new", "category:", "addCompiledMethod:"],
 messageSends: ["load:forClass:", "new", "category:", "addCompiledMethod:"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.Compiler]
 }),
 }),
 smalltalk.ClassCategoryReader);
 smalltalk.ClassCategoryReader);
 
 
@@ -7293,7 +7424,7 @@ return self;},
 args: [],
 args: [],
 source: unescape('initialize%0A%09super%20initialize.%0A%09chunkParser%20%3A%3D%20ChunkParser%20new.'),
 source: unescape('initialize%0A%09super%20initialize.%0A%09chunkParser%20%3A%3D%20ChunkParser%20new.'),
 messageSends: ["initialize", "new"],
 messageSends: ["initialize", "new"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: [smalltalk.ChunkParser]
 }),
 }),
 smalltalk.ClassCommentReader);
 smalltalk.ClassCommentReader);
 
 

+ 33 - 33
js/SUnit.deploy.js

@@ -1,4 +1,26 @@
 smalltalk.addClass('TestCase', smalltalk.Object, ['testSelector'], 'SUnit');
 smalltalk.addClass('TestCase', smalltalk.Object, ['testSelector'], 'SUnit');
+smalltalk.addMethod(
+'_setTestSelector_',
+smalltalk.method({
+selector: 'setTestSelector:',
+fn: function (aSelector){
+var self=this;
+self['@testSelector']=aSelector;
+return self;}
+}),
+smalltalk.TestCase);
+
+smalltalk.addMethod(
+'_selector',
+smalltalk.method({
+selector: 'selector',
+fn: function (){
+var self=this;
+return self['@testSelector'];
+return self;}
+}),
+smalltalk.TestCase);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_signalFailure_',
 '_signalFailure_',
 smalltalk.method({
 smalltalk.method({
@@ -101,28 +123,6 @@ return self;}
 }),
 }),
 smalltalk.TestCase);
 smalltalk.TestCase);
 
 
-smalltalk.addMethod(
-'_setTestSelector_',
-smalltalk.method({
-selector: 'setTestSelector:',
-fn: function (aSelector){
-var self=this;
-self['@testSelector']=aSelector;
-return self;}
-}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-'_selector',
-smalltalk.method({
-selector: 'selector',
-fn: function (){
-var self=this;
-return self['@testSelector'];
-return self;}
-}),
-smalltalk.TestCase);
-
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_testSelectors',
 '_testSelectors',
@@ -157,17 +157,6 @@ return self;}
 }),
 }),
 smalltalk.TestCase.klass);
 smalltalk.TestCase.klass);
 
 
-smalltalk.addMethod(
-'_shouldInheritSelectors',
-smalltalk.method({
-selector: 'shouldInheritSelectors',
-fn: function (){
-var self=this;
-return smalltalk.send(self, "_~_eq", [smalltalk.send(self, "_lookupHierarchyRoot", [])]);
-return self;}
-}),
-smalltalk.TestCase.klass);
-
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_allTestSelectors',
 '_allTestSelectors',
 smalltalk.method({
 smalltalk.method({
@@ -193,6 +182,17 @@ return self;}
 }),
 }),
 smalltalk.TestCase.klass);
 smalltalk.TestCase.klass);
 
 
+smalltalk.addMethod(
+'_shouldInheritSelectors',
+smalltalk.method({
+selector: 'shouldInheritSelectors',
+fn: function (){
+var self=this;
+return smalltalk.send(self, "_~_eq", [smalltalk.send(self, "_lookupHierarchyRoot", [])]);
+return self;}
+}),
+smalltalk.TestCase.klass);
+
 
 
 smalltalk.addClass('TestFailure', smalltalk.Error, [], 'SUnit');
 smalltalk.addClass('TestFailure', smalltalk.Error, [], 'SUnit');
 
 

+ 51 - 51
js/SUnit.js

@@ -1,4 +1,36 @@
 smalltalk.addClass('TestCase', smalltalk.Object, ['testSelector'], 'SUnit');
 smalltalk.addClass('TestCase', smalltalk.Object, ['testSelector'], 'SUnit');
+smalltalk.addMethod(
+'_setTestSelector_',
+smalltalk.method({
+selector: 'setTestSelector:',
+category: 'accessing',
+fn: function (aSelector){
+var self=this;
+self['@testSelector']=aSelector;
+return self;},
+args: ["aSelector"],
+source: unescape('setTestSelector%3A%20aSelector%0A%09testSelector%20%3A%3D%20aSelector'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.TestCase);
+
+smalltalk.addMethod(
+'_selector',
+smalltalk.method({
+selector: 'selector',
+category: 'accessing',
+fn: function (){
+var self=this;
+return self['@testSelector'];
+return self;},
+args: [],
+source: unescape('selector%0A%09%5EtestSelector'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.TestCase);
+
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_signalFailure_',
 '_signalFailure_',
 smalltalk.method({
 smalltalk.method({
@@ -9,9 +41,9 @@ var self=this;
 (function($rec){smalltalk.send($rec, "_messageText_", [aString]);return smalltalk.send($rec, "_signal", []);})(smalltalk.send((smalltalk.TestFailure || TestFailure), "_new", []));
 (function($rec){smalltalk.send($rec, "_messageText_", [aString]);return smalltalk.send($rec, "_signal", []);})(smalltalk.send((smalltalk.TestFailure || TestFailure), "_new", []));
 return self;},
 return self;},
 args: ["aString"],
 args: ["aString"],
-source: unescape('signalFailure%3A%20aString%0A%09TestFailure%20new%0A%09%09messageText%3A%20aString%3B%0A%09%09signal%20'),
+source: unescape('signalFailure%3A%20aString%0A%09TestFailure%20new%0A%09%09messageText%3A%20aString%3B%0A%09%09signal'),
 messageSends: ["messageText:", "signal", "new"],
 messageSends: ["messageText:", "signal", "new"],
-referencedClasses: [smalltalk.nil]
+referencedClasses: []
 }),
 }),
 smalltalk.TestCase);
 smalltalk.TestCase);
 
 
@@ -78,7 +110,7 @@ return self;},
 args: ["aResult"],
 args: ["aResult"],
 source: unescape('performTestFor%3A%20aResult%0A%09%5B%5Bself%20perform%3A%20self%20selector%5D%0A%09%09on%3A%20TestFailure%20do%3A%20%5B%3Aex%20%7C%20aResult%20addFailure%3A%20self%5D%5D%0A%09%09on%3A%20Error%20do%3A%20%5B%3Aex%20%7C%20aResult%20addError%3A%20self%5D'),
 source: unescape('performTestFor%3A%20aResult%0A%09%5B%5Bself%20perform%3A%20self%20selector%5D%0A%09%09on%3A%20TestFailure%20do%3A%20%5B%3Aex%20%7C%20aResult%20addFailure%3A%20self%5D%5D%0A%09%09on%3A%20Error%20do%3A%20%5B%3Aex%20%7C%20aResult%20addError%3A%20self%5D'),
 messageSends: ["on:do:", "perform:", "selector", "addFailure:", "addError:"],
 messageSends: ["on:do:", "perform:", "selector", "addFailure:", "addError:"],
-referencedClasses: [smalltalk.TestFailure,smalltalk.Error]
+referencedClasses: [smalltalk.Error]
 }),
 }),
 smalltalk.TestCase);
 smalltalk.TestCase);
 
 
@@ -146,38 +178,6 @@ referencedClasses: []
 }),
 }),
 smalltalk.TestCase);
 smalltalk.TestCase);
 
 
-smalltalk.addMethod(
-'_setTestSelector_',
-smalltalk.method({
-selector: 'setTestSelector:',
-category: 'accessing',
-fn: function (aSelector){
-var self=this;
-self['@testSelector']=aSelector;
-return self;},
-args: ["aSelector"],
-source: unescape('setTestSelector%3A%20aSelector%0A%09testSelector%20%3A%3D%20aSelector'),
-messageSends: [],
-referencedClasses: []
-}),
-smalltalk.TestCase);
-
-smalltalk.addMethod(
-'_selector',
-smalltalk.method({
-selector: 'selector',
-category: 'accessing',
-fn: function (){
-var self=this;
-return self['@testSelector'];
-return self;},
-args: [],
-source: unescape('selector%0A%09%5EtestSelector'),
-messageSends: [],
-referencedClasses: []
-}),
-smalltalk.TestCase);
-
 
 
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_testSelectors',
 '_testSelectors',
@@ -227,22 +227,6 @@ referencedClasses: [smalltalk.TestCase]
 }),
 }),
 smalltalk.TestCase.klass);
 smalltalk.TestCase.klass);
 
 
-smalltalk.addMethod(
-'_shouldInheritSelectors',
-smalltalk.method({
-selector: 'shouldInheritSelectors',
-category: 'testing',
-fn: function (){
-var self=this;
-return smalltalk.send(self, "_~_eq", [smalltalk.send(self, "_lookupHierarchyRoot", [])]);
-return self;},
-args: [],
-source: unescape('shouldInheritSelectors%0A%09%5Eself%20%7E%3D%20self%20lookupHierarchyRoot'),
-messageSends: [unescape("%7E%3D"), "lookupHierarchyRoot"],
-referencedClasses: []
-}),
-smalltalk.TestCase.klass);
-
 smalltalk.addMethod(
 smalltalk.addMethod(
 '_allTestSelectors',
 '_allTestSelectors',
 smalltalk.method({
 smalltalk.method({
@@ -278,6 +262,22 @@ referencedClasses: []
 }),
 }),
 smalltalk.TestCase.klass);
 smalltalk.TestCase.klass);
 
 
+smalltalk.addMethod(
+'_shouldInheritSelectors',
+smalltalk.method({
+selector: 'shouldInheritSelectors',
+category: 'testing',
+fn: function (){
+var self=this;
+return smalltalk.send(self, "_~_eq", [smalltalk.send(self, "_lookupHierarchyRoot", [])]);
+return self;},
+args: [],
+source: unescape('shouldInheritSelectors%0A%09%5Eself%20%7E%3D%20self%20lookupHierarchyRoot'),
+messageSends: [unescape("%7E%3D"), "lookupHierarchyRoot"],
+referencedClasses: []
+}),
+smalltalk.TestCase.klass);
+
 
 
 smalltalk.addClass('TestFailure', smalltalk.Error, [], 'SUnit');
 smalltalk.addClass('TestFailure', smalltalk.Error, [], 'SUnit');
 
 

+ 57 - 12
js/boot.js

@@ -38,6 +38,7 @@
 function SmalltalkObject(){};
 function SmalltalkObject(){};
 function SmalltalkBehavior(){};
 function SmalltalkBehavior(){};
 function SmalltalkClass(){};
 function SmalltalkClass(){};
+function SmalltalkModule(){};
 function SmalltalkMetaclass(){
 function SmalltalkMetaclass(){
     this.meta = true;
     this.meta = true;
 };
 };
@@ -49,6 +50,20 @@ function Smalltalk(){
     var st = this;
     var st = this;
     this.thisContext = undefined;
     this.thisContext = undefined;
 
 
+    
+    /* We hold all Modules in a separate Object */
+    st.modules = {};
+
+    /* Smalltalk Module object. To add a Module, use smalltalk.addModule() */
+
+    function mod(spec) {
+	var that = new SmalltalkModule();
+	that.moduleName        = spec.moduleName;
+	that.requires          = spec.requires || [];
+	that.fn                = spec.fn || function(){};
+	return that;
+    };
+
     /* Smalltalk class creation. A class is an instance of an automatically 
     /* Smalltalk class creation. A class is an instance of an automatically 
        created metaclass object. Newly created classes (not their metaclass) 
        created metaclass object. Newly created classes (not their metaclass) 
        should be added to the smalltalk object, see smalltalk.addClass().
        should be added to the smalltalk object, see smalltalk.addClass().
@@ -72,7 +87,11 @@ function Smalltalk(){
 	if(that.superclass) {
 	if(that.superclass) {
 	    that.klass.superclass = that.superclass.klass;
 	    that.klass.superclass = that.superclass.klass;
 	}
 	}
-	that.category = spec.category || "";
+	that.module = spec.module;
+        // For a while we keep the category attribute...
+        if(!(spec.module === undefined)) {
+	    that.category = spec.module.moduleName;
+	}
 	that.fn.prototype.methods = {};
 	that.fn.prototype.methods = {};
 	that.fn.prototype.inheritedMethods = {};
 	that.fn.prototype.inheritedMethods = {};
 	that.fn.prototype.klass = that;
 	that.fn.prototype.klass = that;
@@ -123,6 +142,16 @@ function Smalltalk(){
 	}
 	}
     };
     };
 
 
+    /* Answer all registered Modules */
+
+    st.modules.all = function() {
+	var modules = [];
+	for(var i in st.modules) {
+	    modules.push(st.modules[i]);
+	}
+	return modules
+    };
+
     /* Answer all registered Smalltalk classes */
     /* Answer all registered Smalltalk classes */
 
 
     st.classes = function() {
     st.classes = function() {
@@ -131,7 +160,6 @@ function Smalltalk(){
 	    if(i.search(/^[A-Z]/g) != -1) {
 	    if(i.search(/^[A-Z]/g) != -1) {
 		classes.push(st[i]);
 		classes.push(st[i]);
 	    }
 	    }
-
 	}
 	}
 	return classes
 	return classes
     };
     };
@@ -170,31 +198,47 @@ function Smalltalk(){
     };
     };
 
 
     /* Create a new class wrapping a JavaScript constructor, and add it to the 
     /* Create a new class wrapping a JavaScript constructor, and add it to the 
-       global smalltalk object. */
+       global smalltalk object. Module is lazily created if it does not exist with given name. */
 
 
-    st.mapClassName = function(className, category, fn, superclass) {
+    st.mapClassName = function(className, moduleName, fn, superclass) {
+	modul = st.addModule(moduleName);
 	st[className] = klass({
 	st[className] = klass({
 	    className:  className, 
 	    className:  className, 
-	    category:   category, 
+	    module:     modul, 
 	    superclass: superclass,
 	    superclass: superclass,
 	    fn:         fn
 	    fn:         fn
 	});
 	});
     };
     };
 
 
-    /* Add a class to the smalltalk object, creating a new one if needed. */
+    /* Add a module to the smalltalk.modules object, creating a new one if needed.
+       If moduleName is nil or empty we return nil, which is an allowed module for a class. */
 
 
-    st.addClass = function(className, superclass, iVarNames, category) {
+    st.addModule = function(moduleName) {
+	if(!moduleName) {return nil;}
+	if(!(st.modules[moduleName])) {
+	    st.modules[moduleName] = mod({
+		moduleName: moduleName
+	    });
+	}
+	return st.modules[moduleName];
+    };
+
+    /* Add a class to the smalltalk object, creating a new one if needed.
+       Module is lazily created if it does not exist with given name.*/
+
+    st.addClass = function(className, superclass, iVarNames, moduleName) {
+	modul = st.addModule(moduleName);
 	if(st[className]) {
 	if(st[className]) {
 	    st[className].superclass = superclass;
 	    st[className].superclass = superclass;
 	    st[className].iVarNames = iVarNames;
 	    st[className].iVarNames = iVarNames;
-	    st[className].category = category || st[className].category;
-	} else {
+	    st[className].module = modul || st[className].module;
+	} else {    
 	    st[className] = klass({
 	    st[className] = klass({
 		className: className, 
 		className: className, 
 		iVarNames: iVarNames,
 		iVarNames: iVarNames,
-		superclass: superclass
+		superclass: superclass,
+		module: modul
 	    });
 	    });
-	    st[className].category = category || '';
 	}
 	}
     };
     };
 
 
@@ -467,12 +511,13 @@ if(this.jQuery) {
 
 
 smalltalk.mapClassName("Object", "Kernel", SmalltalkObject);
 smalltalk.mapClassName("Object", "Kernel", SmalltalkObject);
 smalltalk.mapClassName("Smalltalk", "Kernel", Smalltalk, smalltalk.Object);
 smalltalk.mapClassName("Smalltalk", "Kernel", Smalltalk, smalltalk.Object);
+smalltalk.mapClassName("Module", "Kernel", SmalltalkModule, smalltalk.Object);
 smalltalk.mapClassName("Behavior", "Kernel", SmalltalkBehavior, smalltalk.Object);
 smalltalk.mapClassName("Behavior", "Kernel", SmalltalkBehavior, smalltalk.Object);
 smalltalk.mapClassName("Class", "Kernel", SmalltalkClass, smalltalk.Behavior);
 smalltalk.mapClassName("Class", "Kernel", SmalltalkClass, smalltalk.Behavior);
 smalltalk.mapClassName("Metaclass", "Kernel", SmalltalkMetaclass, smalltalk.Behavior);
 smalltalk.mapClassName("Metaclass", "Kernel", SmalltalkMetaclass, smalltalk.Behavior);
 smalltalk.mapClassName("CompiledMethod", "Kernel", SmalltalkMethod, smalltalk.Object);
 smalltalk.mapClassName("CompiledMethod", "Kernel", SmalltalkMethod, smalltalk.Object);
 
 
-smalltalk.Object.klass.superclass = smalltalk.Class
+smalltalk.Object.klass.superclass = smalltalk.Class;
 
 
 smalltalk.mapClassName("Number", "Kernel", Number, smalltalk.Object);
 smalltalk.mapClassName("Number", "Kernel", Number, smalltalk.Object);
 smalltalk.mapClassName("BlockClosure", "Kernel", Function, smalltalk.Object);
 smalltalk.mapClassName("BlockClosure", "Kernel", Function, smalltalk.Object);

+ 0 - 0
st/Compiler.st


+ 20 - 5
st/IDE.st

@@ -303,6 +303,10 @@ printIt
 
 
 inspectIt
 inspectIt
     sourceArea inspectIt
     sourceArea inspectIt
+!
+
+fileIn
+    sourceArea fileIn
 ! !
 ! !
 
 
 !Workspace methodsFor: 'rendering'!
 !Workspace methodsFor: 'rendering'!
@@ -325,6 +329,10 @@ renderButtonsOn: html
 	with: 'InspectIt';
 	with: 'InspectIt';
 	title: 'ctrl+i';
 	title: 'ctrl+i';
 	onClick: [self inspectIt].
 	onClick: [self inspectIt].
+    html button
+	with: 'FileIn';
+	title: 'ctrl+f';
+	onClick: [self fileIn].
     html button
     html button
 	with: 'Clear workspace';
 	with: 'Clear workspace';
 	onClick: [self clearWorkspace]
 	onClick: [self clearWorkspace]
@@ -1401,6 +1409,12 @@ onDoIt: aBlock
 
 
 onDoIt
 onDoIt
 	^onDoIt
 	^onDoIt
+!
+
+currentLineOrSelection
+    ^editor somethingSelected
+	ifFalse: [self currentLine]
+	ifTrue: [self selection]
 ! !
 ! !
 
 
 !SourceArea methodsFor: 'actions'!
 !SourceArea methodsFor: 'actions'!
@@ -1410,11 +1424,8 @@ clear
 !
 !
 
 
 doIt
 doIt
-    | selection result |
-    editor somethingSelected
-	ifFalse: [selection := self currentLine]
-	ifTrue: [selection := self selection].
-    result := self eval: selection.
+    | result |
+    result := self eval: self currentLineOrSelection.
     self onDoIt ifNotNil: [self onDoIt value].
     self onDoIt ifNotNil: [self onDoIt value].
     ^result
     ^result
 !
 !
@@ -1466,6 +1477,10 @@ print: aString
 
 
 printIt
 printIt
     self print: self doIt printString
     self print: self doIt printString
+!
+
+fileIn
+    Importer new import: self currentLineOrSelection readStream
 ! !
 ! !
 
 
 !SourceArea methodsFor: 'events'!
 !SourceArea methodsFor: 'events'!

+ 64 - 21
st/Kernel.st

@@ -287,9 +287,13 @@ parseError: anException parsing: aString
 	badLine := (badLine copyFrom: 1 to: col - 1), ' ===>', (badLine copyFrom:  col to: badLine size).
 	badLine := (badLine copyFrom: 1 to: col - 1), ' ===>', (badLine copyFrom:  col to: badLine size).
 	lines at: row put: badLine.
 	lines at: row put: badLine.
 	code := String streamContents: [:s |
 	code := String streamContents: [:s |
-                                        lines withIndexDo: [:l :i |
-                                                   s nextPutAll: i asString, ': ', l, String lf]].
+                  lines withIndexDo: [:l :i |
+                     s nextPutAll: i asString, ': ', l, String lf]].
 	^ Error new messageText: ('Parse error on line ' , row , ' column ' , col , ' : ' , message , ' Below is code with line numbers and ===> marker inserted:' , String lf, code)
 	^ Error new messageText: ('Parse error on line ' , row , ' column ' , col , ' : ' , message , ' Below is code with line numbers and ===> marker inserted:' , String lf, code)
+!
+
+modules
+	<return self.modules.all()>
 ! !
 ! !
 
 
 Smalltalk class instanceVariableNames: 'current'!
 Smalltalk class instanceVariableNames: 'current'!
@@ -300,6 +304,24 @@ current
 	<return smalltalk>
 	<return smalltalk>
 ! !
 ! !
 
 
+Object subclass: #Module
+	instanceVariableNames: ''
+	category: 'Kernel'!
+
+!Module methodsFor: 'accessing'!
+
+name
+	<return self.moduleName || nil>
+!
+
+requires
+	<return self.requires || nil>
+!
+
+name: aString
+	<return self.moduleName = aString>
+! !
+
 Object subclass: #Behavior
 Object subclass: #Behavior
 	instanceVariableNames: ''
 	instanceVariableNames: ''
 	category: 'Kernel'!
 	category: 'Kernel'!
@@ -456,11 +478,7 @@ Behavior subclass: #Class
 !Class methodsFor: 'accessing'!
 !Class methodsFor: 'accessing'!
 
 
 category
 category
-	<return self.category>
-!
-
-category: aString
-	<self.category = aString>
+	^self module ifNil: ['unclassified'] ifNotNil: [self module name]
 !
 !
 
 
 rename: aString
 rename: aString
@@ -469,22 +487,36 @@ rename: aString
 		delete smalltalk[self.className];
 		delete smalltalk[self.className];
 		self.className = aString;
 		self.className = aString;
 	>
 	>
+!
+
+module
+	<return self.module>
+!
+
+module: aModule
+	<self.module = aModule>
 ! !
 ! !
 
 
 !Class methodsFor: 'class creation'!
 !Class methodsFor: 'class creation'!
 
 
 subclass: aString instanceVariableNames: anotherString
 subclass: aString instanceVariableNames: anotherString
-	^self subclass: aString instanceVariableNames: anotherString category: nil
+	"Kept for compatibility."
+	^self subclass: aString instanceVariableNames: anotherString module: nil
 !
 !
 
 
 subclass: aString instanceVariableNames: aString2 category: aString3
 subclass: aString instanceVariableNames: aString2 category: aString3
-	^ClassBuilder new
-	    superclass: self subclass: aString instanceVariableNames: aString2 category: aString3
+	"Kept for compatibility."
+	^self subclass: aString instanceVariableNames: aString2 module: aString3
 !
 !
 
 
 subclass: aString instanceVariableNames: aString2 classVariableNames: classVars poolDictionaries: pools category: aString3
 subclass: aString instanceVariableNames: aString2 classVariableNames: classVars poolDictionaries: pools category: aString3
 	"Just ignore class variables and pools. Added for compatibility."
 	"Just ignore class variables and pools. Added for compatibility."
-	^self subclass: aString instanceVariableNames: aString2 category: aString3
+	^self subclass: aString instanceVariableNames: aString2 module: aString3
+!
+
+subclass: aString instanceVariableNames: aString2 module: aString3
+	^ClassBuilder new
+	    superclass: self subclass: aString instanceVariableNames: aString2 module: aString3
 ! !
 ! !
 
 
 !Class methodsFor: 'printing'!
 !Class methodsFor: 'printing'!
@@ -1128,12 +1160,17 @@ Object subclass: #UndefinedObject
 !UndefinedObject methodsFor: 'class creation'!
 !UndefinedObject methodsFor: 'class creation'!
 
 
 subclass: aString instanceVariableNames: anotherString
 subclass: aString instanceVariableNames: anotherString
-	^self subclass: aString instanceVariableNames: anotherString category: nil
+	^self subclass: aString instanceVariableNames: anotherString module: nil
 !
 !
 
 
 subclass: aString instanceVariableNames: aString2 category: aString3
 subclass: aString instanceVariableNames: aString2 category: aString3
+	"Kept for compatibility."
+	^self subclass: aString instanceVariableNames: aString2 module: aString3
+!
+
+subclass: aString instanceVariableNames: aString2 module: aString3
 	^ClassBuilder new
 	^ClassBuilder new
-	    superclass: self subclass: aString instanceVariableNames: aString2 category: aString3
+	    superclass: self subclass: aString instanceVariableNames: aString2 module: aString3
 ! !
 ! !
 
 
 !UndefinedObject methodsFor: 'copying'!
 !UndefinedObject methodsFor: 'copying'!
@@ -2252,20 +2289,21 @@ Object subclass: #ClassBuilder
 !ClassBuilder methodsFor: 'class creation'!
 !ClassBuilder methodsFor: 'class creation'!
 
 
 superclass: aClass subclass: aString
 superclass: aClass subclass: aString
-	self superclass: aClass subclass: aString instanceVariableNames: '' category: nil
-!
-
-superclass: aClass subclass: aString instanceVariableNames: aString2 category: aString3
-	| newClass |
-	newClass := self addSubclassOf: aClass named: aString instanceVariableNames: (self instanceVariableNamesFor: aString2).
-	self setupClass: newClass.
-	newClass category: (aString3 ifNil: ['unclassified'])
+	^self superclass: aClass subclass: aString instanceVariableNames: '' module: nil
 !
 !
 
 
 class: aClass instanceVariableNames: aString
 class: aClass instanceVariableNames: aString
 	aClass isMetaclass ifFalse: [self error: aClass name, ' is not a metaclass'].
 	aClass isMetaclass ifFalse: [self error: aClass name, ' is not a metaclass'].
 	aClass basicAt: 'iVarNames' put: (self instanceVariableNamesFor: aString).
 	aClass basicAt: 'iVarNames' put: (self instanceVariableNamesFor: aString).
 	self setupClass: aClass
 	self setupClass: aClass
+!
+
+superclass: aClass subclass: aString instanceVariableNames: aString2 module: aString3
+	| newClass |
+	newClass := self addSubclassOf: aClass
+				named: aString instanceVariableNames: (self instanceVariableNamesFor: aString2)
+				module: (aString3 ifNil: ['unclassified']).
+	self setupClass: newClass
 ! !
 ! !
 
 
 !ClassBuilder methodsFor: 'private'!
 !ClassBuilder methodsFor: 'private'!
@@ -2281,6 +2319,11 @@ addSubclassOf: aClass named: aString instanceVariableNames: aCollection
 
 
 setupClass: aClass
 setupClass: aClass
 	<smalltalk.init(aClass);>
 	<smalltalk.init(aClass);>
+!
+
+addSubclassOf: aClass named: aString instanceVariableNames: aCollection module: moduleName
+	<smalltalk.addClass(aString, aClass, aCollection, moduleName);
+	    return smalltalk[aString]>
 ! !
 ! !
 
 
 Object subclass: #ClassCategoryReader
 Object subclass: #ClassCategoryReader

Some files were not shown because too many files changed in this diff