Parcourir la source

- new Canvas tags
- Widget>>update and Widget>>render removed
- Removed root inst var in Widget
- Fixed inst var compiling
- Fixed Behavior >> allInstanceVariableNames
- Added Smalltalk>>removeClass:
- Added temps to MethodContext>>inspectOn:
- Added JQuery class>>documentReady:
- Added String>>asUppercase and #asLowercase

Nicolas Petton il y a 12 ans
Parent
commit
257104b5b1
26 fichiers modifiés avec 205 ajouts et 115 suppressions
  1. 1 2
      css/jtalk.css
  2. 0 0
      js/Benchfib.js
  3. 46 53
      js/Canvas.js
  4. 12 12
      js/Compiler.js
  5. 0 0
      js/Examples.js
  6. 6 5
      js/IDE.js
  7. 15 0
      js/JQuery.js
  8. 73 4
      js/Kernel.js
  9. 0 0
      js/Parser.js
  10. 0 0
      js/SUnit.js
  11. 0 12
      js/boot.js
  12. 0 0
      js/init.js
  13. 0 0
      js/jquery-1.4.4.min.js
  14. 0 0
      js/jquery-ui-1.8.9.custom.min.js
  15. 0 0
      js/jquery.textarea.js
  16. 0 0
      js/jtalk.deploy.js
  17. 0 0
      js/jtalk.js
  18. 0 0
      st/Benchfib.st
  19. 13 22
      st/Canvas.st
  20. 2 2
      st/Compiler.st
  21. 0 0
      st/Examples.st
  22. 2 1
      st/IDE.st
  23. 4 0
      st/JQuery.st
  24. 31 2
      st/Kernel.st
  25. 0 0
      st/Parser.st
  26. 0 0
      st/SUnit.st

+ 1 - 2
css/jtalk.css

@@ -7,7 +7,6 @@ body.jtalkBody {
     font-family: helvetica,arial,sans;
     font-size: 12px;
     line-height: 1;
-    background: white;
     z-index: 1001;
     bottom: 0;
     left: 0;
@@ -15,7 +14,7 @@ body.jtalkBody {
     margin: 0;
     padding: 0 0 3px 0;
     height: 20px;
-    background: white;
+    background: transparent;
 }
 #jtalkTabs li {
     list-style-type: none;

+ 0 - 0
js/Benchfib.js


+ 46 - 53
js/Canvas.js

@@ -708,6 +708,51 @@ referencedClasses: [smalltalk.nil]
 }),
 smalltalk.HTMLCanvas);
 
+smalltalk.addMethod(
+'_pre',
+smalltalk.method({
+selector: 'pre',
+category: 'tags',
+fn: function (){
+var self=this;
+return smalltalk.send(self, "_tag_", ["pre"]);
+return self;},
+source: unescape('pre%0A%20%20%20%20%5Eself%20tag%3A%20%27pre%27'),
+messageSends: ["tag:"],
+referencedClasses: []
+}),
+smalltalk.HTMLCanvas);
+
+smalltalk.addMethod(
+'_code',
+smalltalk.method({
+selector: 'code',
+category: 'tags',
+fn: function (){
+var self=this;
+return smalltalk.send(self, "_tag_", ["code"]);
+return self;},
+source: unescape('code%0A%20%20%20%20%5Eself%20tag%3A%20%27code%27'),
+messageSends: ["tag:"],
+referencedClasses: []
+}),
+smalltalk.HTMLCanvas);
+
+smalltalk.addMethod(
+'_br',
+smalltalk.method({
+selector: 'br',
+category: 'tags',
+fn: function (){
+var self=this;
+return smalltalk.send(self, "_tag_", ["br"]);
+return self;},
+source: unescape('br%0A%20%20%20%20%5Eself%20tag%3A%20%27br%27'),
+messageSends: ["tag:"],
+referencedClasses: []
+}),
+smalltalk.HTMLCanvas);
+
 
 smalltalk.addMethod(
 '_onJQuery_',
@@ -1216,22 +1261,7 @@ referencedClasses: []
 smalltalk.TagBrush.klass);
 
 
-smalltalk.addClass('Widget', smalltalk.Object, ['root'], 'Canvas');
-smalltalk.addMethod(
-'_root',
-smalltalk.method({
-selector: 'root',
-category: 'accessing',
-fn: function (){
-var self=this;
-return self['@root'];
-return self;},
-source: unescape('root%0A%20%20%20%20%5Eroot'),
-messageSends: [],
-referencedClasses: []
-}),
-smalltalk.Widget);
-
+smalltalk.addClass('Widget', smalltalk.Object, [], 'Canvas');
 smalltalk.addMethod(
 '_appendToBrush_',
 smalltalk.method({
@@ -1322,43 +1352,6 @@ referencedClasses: []
 }),
 smalltalk.Widget);
 
-smalltalk.addMethod(
-'_update',
-smalltalk.method({
-selector: 'update',
-category: 'actions',
-fn: function (){
-var self=this;
-var canvas=nil;
-canvas=smalltalk.send(smalltalk.HTMLCanvas, "_new", []);
-smalltalk.send(canvas, "_root_", [smalltalk.send(self, "_root", [])]);
-smalltalk.send(smalltalk.send(smalltalk.send(self, "_root", []), "_asJQuery", []), "_empty", []);
-smalltalk.send(self, "_renderOn_", [canvas]);
-return self;},
-source: unescape('update%0A%20%20%20%20%7C%20canvas%20%7C%0A%20%20%20%20canvas%20%3A%3D%20HTMLCanvas%20new.%0A%20%20%20%20canvas%20root%3A%20self%20root.%0A%20%20%20%20self%20root%20asJQuery%20empty.%0A%20%20%20%20self%20renderOn%3A%20canvas'),
-messageSends: ["new", "root:", "root", "empty", "asJQuery", "renderOn:"],
-referencedClasses: [smalltalk.HTMLCanvas]
-}),
-smalltalk.Widget);
-
-smalltalk.addMethod(
-'_render',
-smalltalk.method({
-selector: 'render',
-category: 'rendering',
-fn: function (){
-var self=this;
-var canvas=nil;
-canvas=smalltalk.send(smalltalk.HTMLCanvas, "_new", []);
-self['@root']=smalltalk.send(canvas, "_root", []);
-smalltalk.send(self, "_renderOn_", [canvas]);
-return self;},
-source: unescape('render%0A%20%20%20%20%7C%20canvas%20%7C%0A%20%20%20%20canvas%20%3A%3D%20HTMLCanvas%20new.%0A%20%20%20%20root%20%3A%3D%20canvas%20root.%0A%20%20%20%20self%20renderOn%3A%20canvas'),
-messageSends: ["new", "root", "renderOn:"],
-referencedClasses: [smalltalk.HTMLCanvas]
-}),
-smalltalk.Widget);
-
 smalltalk.addMethod(
 '_renderOn_',
 smalltalk.method({

+ 12 - 12
js/Compiler.js

@@ -288,7 +288,7 @@ return (function($rec){smalltalk.send($rec, "_receiver_", [smalltalk.send(self,
 return self;},
 source: unescape('cascadeNodeWithMessages%3A%20aCollection%0A%09%7C%20first%20%7C%0A%09first%20%3A%3D%20SendNode%20new%0A%09%20%20%20%20selector%3A%20self%20selector%3B%0A%09%20%20%20%20arguments%3A%20self%20arguments%3B%0A%09%20%20%20%20yourself.%0A%09%5ECascadeNode%20new%0A%09%20%20%20%20receiver%3A%20self%20receiver%3B%0A%09%20%20%20%20nodes%3A%20%28Array%20with%3A%20first%29%2C%20aCollection%3B%0A%09%20%20%20%20yourself'),
 messageSends: ["selector:", "selector", "arguments:", "arguments", "yourself", "new", "receiver:", "receiver", "nodes:", unescape("%2C"), "with:"],
-referencedClasses: [smalltalk.SendNode,smalltalk.Array,smalltalk.CascadeNode]
+referencedClasses: [smalltalk.SendNode,smalltalk.Array,smalltalk.nil]
 }),
 smalltalk.SendNode);
 
@@ -525,7 +525,7 @@ return (function($rec){smalltalk.send($rec, "_nodes_", [smalltalk.send(self, "_n
 return self;},
 source: unescape('asBlockSequenceNode%0A%09%5EBlockSequenceNode%20new%0A%09%20%20%20%20nodes%3A%20self%20nodes%3B%0A%09%20%20%20%20temps%3A%20self%20temps%3B%0A%09%20%20%20%20yourself'),
 messageSends: ["nodes:", "nodes", "temps:", "temps", "yourself", "new"],
-referencedClasses: [smalltalk.BlockSequenceNode]
+referencedClasses: [smalltalk.nil]
 }),
 smalltalk.SequenceNode);
 
@@ -1005,7 +1005,7 @@ return smalltalk.send(smalltalk.send(smalltalk.DoIt, "_new", []), "_doIt", []);
 return self;},
 source: unescape('loadExpression%3A%20aString%0A%09DoIt%20addCompiledMethod%3A%20%28self%20eval%3A%20%28self%20compileExpression%3A%20aString%29%29.%0A%09%5EDoIt%20new%20doIt'),
 messageSends: ["addCompiledMethod:", "eval:", "compileExpression:", "doIt", "new"],
-referencedClasses: [smalltalk.DoIt]
+referencedClasses: [smalltalk.nil]
 }),
 smalltalk.Compiler);
 
@@ -1055,7 +1055,7 @@ return smalltalk.send(self, "_compileNode_", [smalltalk.send(self, "_parseExpres
 return self;},
 source: unescape('compileExpression%3A%20aString%0A%09self%20currentClass%3A%20DoIt.%0A%09%5Eself%20compileNode%3A%20%28self%20parseExpression%3A%20aString%29'),
 messageSends: ["currentClass:", "compileNode:", "parseExpression:"],
-referencedClasses: [smalltalk.DoIt]
+referencedClasses: [smalltalk.nil]
 }),
 smalltalk.Compiler);
 
@@ -1341,10 +1341,10 @@ selector: 'visitVariableNode:',
 category: 'visiting',
 fn: function (aNode){
 var self=this;
-smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_currentClass", []), "_instanceVariableNames", []), "_includes_", [smalltalk.send(aNode, "_value", [])]), "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(unescape("self%5B%27@"), "__comma", [smalltalk.send(aNode, "_value", [])]), "__comma", [unescape("%27%5D")])]);}), (function(){smalltalk.send(smalltalk.send(smalltalk.send(self, "_knownVariables", []), "_includes_", [smalltalk.send(aNode, "_value", [])]), "_ifFalse_", [(function(){return smalltalk.send(self['@unknownVariables'], "_add_", [smalltalk.send(aNode, "_value", [])]);})]);return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(aNode, "_value", [])]);})]);
+smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_currentClass", []), "_allInstanceVariableNames", []), "_includes_", [smalltalk.send(aNode, "_value", [])]), "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(unescape("self%5B%27@"), "__comma", [smalltalk.send(aNode, "_value", [])]), "__comma", [unescape("%27%5D")])]);}), (function(){smalltalk.send(smalltalk.send(smalltalk.send(self, "_knownVariables", []), "_includes_", [smalltalk.send(aNode, "_value", [])]), "_ifFalse_", [(function(){return smalltalk.send(self['@unknownVariables'], "_add_", [smalltalk.send(aNode, "_value", [])]);})]);return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(aNode, "_value", [])]);})]);
 return self;},
-source: unescape('visitVariableNode%3A%20aNode%0A%09%28self%20currentClass%20instanceVariableNames%20includes%3A%20aNode%20value%29%20%0A%09%09ifTrue%3A%20%5Bstream%20nextPutAll%3A%20%27self%5B%27%27@%27%2C%20aNode%20value%2C%20%27%27%27%5D%27%5D%0A%09%09ifFalse%3A%20%5B%0A%09%09%09%28self%20knownVariables%20includes%3A%20aNode%20value%29%20ifFalse%3A%20%5B%0A%09%09%09%09unknownVariables%20add%3A%20aNode%20value%5D.%0A%09%09%09stream%20nextPutAll%3A%20aNode%20value%5D'),
-messageSends: ["ifTrue:ifFalse:", "includes:", "instanceVariableNames", "currentClass", "value", "nextPutAll:", unescape("%2C"), "ifFalse:", "knownVariables", "add:"],
+source: unescape('visitVariableNode%3A%20aNode%0A%09%28self%20currentClass%20allInstanceVariableNames%20includes%3A%20aNode%20value%29%20%0A%09%09ifTrue%3A%20%5Bstream%20nextPutAll%3A%20%27self%5B%27%27@%27%2C%20aNode%20value%2C%20%27%27%27%5D%27%5D%0A%09%09ifFalse%3A%20%5B%0A%09%09%09%28self%20knownVariables%20includes%3A%20aNode%20value%29%20ifFalse%3A%20%5B%0A%09%09%09%09unknownVariables%20add%3A%20aNode%20value%5D.%0A%09%09%09stream%20nextPutAll%3A%20aNode%20value%5D'),
+messageSends: ["ifTrue:ifFalse:", "includes:", "allInstanceVariableNames", "currentClass", "value", "nextPutAll:", unescape("%2C"), "ifFalse:", "knownVariables", "add:"],
 referencedClasses: []
 }),
 smalltalk.Compiler);
@@ -1482,7 +1482,7 @@ smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.Smalltalk, "_current", []
 return self;},
 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:"],
-referencedClasses: [smalltalk.Smalltalk,smalltalk.Transcript]
+referencedClasses: [smalltalk.Smalltalk,smalltalk.nil]
 }),
 smalltalk.Compiler);
 
@@ -1573,11 +1573,11 @@ selector: 'doIt',
 category: '',
 fn: function (){
 var self=this;
-return smalltalk.send((function(){return smalltalk.send(smalltalk.send(smalltalk.Compiler, "_new", []), "_recompileAll", []);}), "_value", []);
+return smalltalk.send((function(){return smalltalk.send(smalltalk.ESUG2011Presentation, "_new", []);}), "_value", []);
 return self;},
-source: unescape('doIt%20%5E%5BCompiler%20new%20recompileAll%5D%20value'),
-messageSends: ["value", "recompileAll", "new"],
-referencedClasses: [smalltalk.Compiler]
+source: unescape('doIt%20%5E%5BESUG2011Presentation%20new%5D%20value'),
+messageSends: ["value", "new"],
+referencedClasses: [smalltalk.ESUG2011Presentation]
 }),
 smalltalk.DoIt);
 

+ 0 - 0
js/Examples.js


+ 6 - 5
js/IDE.js

@@ -1231,10 +1231,10 @@ selector: 'removeClass',
 category: 'actions',
 fn: function (){
 var self=this;
-smalltalk.send(smalltalk.send(self, "_confirm_", [smalltalk.send(smalltalk.send("Do you really want to remove ", "__comma", [smalltalk.send(self['@selectedClass'], "_name", [])]), "__comma", [unescape("%3F")])]), "_ifTrue_", [(function(){smalltalk.send(smalltalk.send(smalltalk.Smalltalk, "_current", []), "_basicDelete_", [smalltalk.send(self['@selectedClass'], "_name", [])]);smalltalk.send(self, "_resetClassesList", []);return smalltalk.send(self, "_selectClass_", [nil]);})]);
+smalltalk.send(smalltalk.send(self, "_confirm_", [smalltalk.send(smalltalk.send("Do you really want to remove ", "__comma", [smalltalk.send(self['@selectedClass'], "_name", [])]), "__comma", [unescape("%3F")])]), "_ifTrue_", [(function(){smalltalk.send(smalltalk.send(smalltalk.Smalltalk, "_current", []), "_removeClass_", [self['@selectedClass']]);smalltalk.send(self, "_resetClassesList", []);return smalltalk.send(self, "_selectClass_", [nil]);})]);
 return self;},
-source: unescape('removeClass%0A%20%20%20%20%28self%20confirm%3A%20%27Do%20you%20really%20want%20to%20remove%20%27%2C%20selectedClass%20name%2C%20%27%3F%27%29%0A%09ifTrue%3A%20%5B%0A%09%20%20%20%20Smalltalk%20current%20basicDelete%3A%20selectedClass%20name.%0A%09%20%20%20%20self%20resetClassesList.%0A%09%20%20%20%20self%20selectClass%3A%20nil%5D'),
-messageSends: ["ifTrue:", "confirm:", unescape("%2C"), "name", "basicDelete:", "current", "resetClassesList", "selectClass:"],
+source: unescape('removeClass%0A%20%20%20%20%28self%20confirm%3A%20%27Do%20you%20really%20want%20to%20remove%20%27%2C%20selectedClass%20name%2C%20%27%3F%27%29%0A%09ifTrue%3A%20%5B%0A%09%20%20%20%20Smalltalk%20current%20removeClass%3A%20selectedClass.%0A%09%20%20%20%20self%20resetClassesList.%0A%09%20%20%20%20self%20selectClass%3A%20nil%5D'),
+messageSends: ["ifTrue:", "confirm:", unescape("%2C"), "name", "removeClass:", "current", "resetClassesList", "selectClass:"],
 referencedClasses: [smalltalk.Smalltalk]
 }),
 smalltalk.Browser);
@@ -3373,11 +3373,12 @@ smalltalk.send(variables, "_at_put_", [unescape("%23self"), self]);
 smalltalk.send(variables, "_at_put_", [unescape("%23home"), smalltalk.send(self, "_home", [])]);
 smalltalk.send(variables, "_at_put_", [unescape("%23receiver"), smalltalk.send(self, "_receiver", [])]);
 smalltalk.send(variables, "_at_put_", [unescape("%23selector"), smalltalk.send(self, "_selector", [])]);
+smalltalk.send(variables, "_at_put_", [unescape("%23temps"), smalltalk.send(self, "_temps", [])]);
 smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "_instanceVariableNames", []), "_do_", [(function(each){return smalltalk.send(variables, "_at_put_", [each, smalltalk.send(self, "_instVarAt_", [each])]);})]);
 (function($rec){smalltalk.send($rec, "_setLabel_", [smalltalk.send(self, "_printString", [])]);return smalltalk.send($rec, "_setVariables_", [variables]);})(anInspector);
 return self;},
-source: unescape('inspectOn%3A%20anInspector%0A%09%7C%20variables%20%7C%0A%09variables%20%3A%3D%20Dictionary%20new.%0A%09variables%20at%3A%20%27%23self%27%20put%3A%20self.%0A%09variables%20at%3A%20%27%23home%27%20put%3A%20self%20home.%0A%09variables%20at%3A%20%27%23receiver%27%20put%3A%20self%20receiver.%0A%09variables%20at%3A%20%27%23selector%27%20put%3A%20self%20selector.%0A%09self%20class%20instanceVariableNames%20do%3A%20%5B%3Aeach%20%7C%0A%09%09variables%20at%3A%20each%20put%3A%20%28self%20instVarAt%3A%20each%29%5D.%0A%09anInspector%20%0A%09%09setLabel%3A%20self%20printString%3B%0A%09%09setVariables%3A%20variables'),
-messageSends: ["new", "at:put:", "home", "receiver", "selector", "do:", "instanceVariableNames", "class", "instVarAt:", "setLabel:", "printString", "setVariables:"],
+source: unescape('inspectOn%3A%20anInspector%0A%09%7C%20variables%20%7C%0A%09variables%20%3A%3D%20Dictionary%20new.%0A%09variables%20at%3A%20%27%23self%27%20put%3A%20self.%0A%09variables%20at%3A%20%27%23home%27%20put%3A%20self%20home.%0A%09variables%20at%3A%20%27%23receiver%27%20put%3A%20self%20receiver.%0A%09variables%20at%3A%20%27%23selector%27%20put%3A%20self%20selector.%0A%09variables%20at%3A%20%27%23temps%27%20put%3A%20self%20temps.%0A%09self%20class%20instanceVariableNames%20do%3A%20%5B%3Aeach%20%7C%0A%09%09variables%20at%3A%20each%20put%3A%20%28self%20instVarAt%3A%20each%29%5D.%0A%09anInspector%20%0A%09%09setLabel%3A%20self%20printString%3B%0A%09%09setVariables%3A%20variables'),
+messageSends: ["new", "at:put:", "home", "receiver", "selector", "temps", "do:", "instanceVariableNames", "class", "instVarAt:", "setLabel:", "printString", "setVariables:"],
 referencedClasses: [smalltalk.Dictionary]
 }),
 smalltalk.MethodContext);

+ 15 - 0
js/JQuery.js

@@ -710,6 +710,21 @@ referencedClasses: []
 }),
 smalltalk.JQuery.klass);
 
+smalltalk.addMethod(
+'_documentReady_',
+smalltalk.method({
+selector: 'documentReady:',
+category: 'instance creation',
+fn: function (aBlock){
+var self=this;
+jQuery(document).ready(aBlock);
+return self;},
+source: unescape('documentReady%3A%20aBlock%0A%09%3CjQuery%28document%29.ready%28aBlock%29%3E'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.JQuery.klass);
+
 
 smalltalk.addClass('Ajax', smalltalk.Object, ['settings'], 'JQuery');
 smalltalk.Ajax.comment=unescape('instance%20variable%20names%3A%0A-%20settings%20%20A%20set%20of%20key/value%20pairs%20that%20configure%20the%20Ajax%20request.%20All%20settings%20are%20optional.%0A%0AFull%20list%20of%20settings%20options%20at%20http%3A//api.jquery.com/jQuery.ajax/')

+ 73 - 4
js/Kernel.js

@@ -786,6 +786,24 @@ referencedClasses: []
 }),
 smalltalk.Smalltalk);
 
+smalltalk.addMethod(
+'_removeClass_',
+smalltalk.method({
+selector: 'removeClass:',
+category: 'accessing',
+fn: function (aClass){
+var self=this;
+smalltalk.send(smalltalk.send(aClass, "_isMetaclass", []), "_ifTrue_", [(function(){return smalltalk.send(self, "_error_", [smalltalk.send(smalltalk.send(aClass, "_asString", []), "__comma", [unescape("%20is%20a%20Metaclass%20and%20cannot%20be%20removed%21")])]);})]);
+smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_methodDictionary", []), "_values", []), "_do_", [(function(each){return smalltalk.send(aClass, "_removeCompiledMethod_", [each]);})]);
+smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_class", []), "_methodDictionary", []), "_values", []), "_do_", [(function(each){return smalltalk.send(smalltalk.send(aClass, "_class", []), "_removeCompiledMethod_", [each]);})]);
+smalltalk.send(self, "_basicDelete_", [smalltalk.send(aClass, "_name", [])]);
+return self;},
+source: unescape('removeClass%3A%20aClass%0A%09aClass%20isMetaclass%20ifTrue%3A%20%5Bself%20error%3A%20aClass%20asString%2C%20%27%20is%20a%20Metaclass%20and%20cannot%20be%20removed%21%27%5D.%0A%09aClass%20methodDictionary%20values%20do%3A%20%5B%3Aeach%20%7C%0A%09%09aClass%20removeCompiledMethod%3A%20each%5D.%0A%09aClass%20class%20methodDictionary%20values%20do%3A%20%5B%3Aeach%20%7C%0A%09%09aClass%20class%20removeCompiledMethod%3A%20each%5D.%0A%09self%20basicDelete%3A%20aClass%20name'),
+messageSends: ["ifTrue:", "isMetaclass", "error:", unescape("%2C"), "asString", "do:", "values", "methodDictionary", "removeCompiledMethod:", "class", "basicDelete:", "name"],
+referencedClasses: []
+}),
+smalltalk.Smalltalk);
+
 
 smalltalk.Smalltalk.klass.iVarNames = ['current'];
 smalltalk.addMethod(
@@ -1049,8 +1067,9 @@ fn: function (aMethod){
 var self=this;
 delete self.fn.prototype[aMethod.selector._asSelector()];
 	delete self.fn.prototype.methods[aMethod.selector];
+	smalltalk.init(self);;
 return self;},
-source: unescape('removeCompiledMethod%3A%20aMethod%0A%09%3Cdelete%20self.fn.prototype%5BaMethod.selector._asSelector%28%29%5D%3B%0A%09delete%20self.fn.prototype.methods%5BaMethod.selector%5D%3E'),
+source: unescape('removeCompiledMethod%3A%20aMethod%0A%09%3Cdelete%20self.fn.prototype%5BaMethod.selector._asSelector%28%29%5D%3B%0A%09delete%20self.fn.prototype.methods%5BaMethod.selector%5D%3B%0A%09smalltalk.init%28self%29%3B%3E'),
 messageSends: [],
 referencedClasses: []
 }),
@@ -1115,12 +1134,12 @@ category: 'accessing',
 fn: function (){
 var self=this;
 var result=nil;
-result=smalltalk.send(self, "_instanceVariableNames", []);
+result=smalltalk.send(smalltalk.send(self, "_instanceVariableNames", []), "_copy", []);
 smalltalk.send(smalltalk.send(self, "_superclass", []), "_ifNotNil_", [(function(){return smalltalk.send(result, "_addAll_", [smalltalk.send(smalltalk.send(self, "_superclass", []), "_allInstanceVariableNames", [])]);})]);
 return result;
 return self;},
-source: unescape('allInstanceVariableNames%0A%09%7C%20result%20%7C%0A%09result%20%3A%3D%20self%20instanceVariableNames.%0A%09self%20superclass%20ifNotNil%3A%20%5B%0A%09%20%20%20%20result%20addAll%3A%20self%20superclass%20allInstanceVariableNames%5D.%0A%09%5Eresult'),
-messageSends: ["instanceVariableNames", "ifNotNil:", "superclass", "addAll:", "allInstanceVariableNames"],
+source: unescape('allInstanceVariableNames%0A%09%7C%20result%20%7C%0A%09result%20%3A%3D%20self%20instanceVariableNames%20copy.%0A%09self%20superclass%20ifNotNil%3A%20%5B%0A%09%20%20%20%20result%20addAll%3A%20self%20superclass%20allInstanceVariableNames%5D.%0A%09%5Eresult'),
+messageSends: ["copy", "instanceVariableNames", "ifNotNil:", "superclass", "addAll:", "allInstanceVariableNames"],
 referencedClasses: []
 }),
 smalltalk.Behavior);
@@ -4386,6 +4405,36 @@ referencedClasses: []
 }),
 smalltalk.String);
 
+smalltalk.addMethod(
+'_asLowercase',
+smalltalk.method({
+selector: 'asLowercase',
+category: 'converting',
+fn: function (){
+var self=this;
+return self.toLowerCase();
+return self;},
+source: unescape('asLowercase%0A%09%3Creturn%20self.toLowerCase%28%29%3E'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.String);
+
+smalltalk.addMethod(
+'_asUppercase',
+smalltalk.method({
+selector: 'asUppercase',
+category: 'converting',
+fn: function (){
+var self=this;
+return self.toUpperCase();
+return self;},
+source: unescape('asUppercase%0A%09%3Creturn%20self.toUpperCase%28%29%3E'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.String);
+
 
 smalltalk.addMethod(
 '_streamClass',
@@ -4761,6 +4810,26 @@ referencedClasses: []
 }),
 smalltalk.Array);
 
+smalltalk.addMethod(
+'_printString',
+smalltalk.method({
+selector: 'printString',
+category: 'enumerating',
+fn: function (){
+var self=this;
+var str=nil;
+str=smalltalk.send("", "_writeStream", []);
+smalltalk.send(str, "_nextPutAll_", [smalltalk.send(smalltalk.send(self, "_printString", [], smalltalk.SequenceableCollection), "__comma", [unescape("%20%28")])]);
+smalltalk.send(self, "_do_separatedBy_", [(function(each){return smalltalk.send(str, "_nextPutAll_", [smalltalk.send(each, "_printString", [])]);}), (function(){return smalltalk.send(str, "_nextPutAll_", [" "]);})]);
+smalltalk.send(str, "_nextPutAll_", [unescape("%29")]);
+return smalltalk.send(str, "_contents", []);
+return self;},
+source: unescape('printString%0A%09%7C%20str%20%7C%0A%09str%20%3A%3D%20%27%27%20writeStream.%0A%09str%20nextPutAll%3A%20super%20printString%2C%20%27%20%28%27.%0A%09self%20%0A%09%09do%3A%20%5B%3Aeach%20%7C%20str%20nextPutAll%3A%20each%20printString%5D%0A%09%09separatedBy%3A%20%5Bstr%20nextPutAll%3A%20%27%20%27%5D.%0A%09str%20nextPutAll%3A%20%27%29%27.%0A%09%5Estr%20contents'),
+messageSends: ["writeStream", "nextPutAll:", unescape("%2C"), "printString", "do:separatedBy:", "contents"],
+referencedClasses: []
+}),
+smalltalk.Array);
+
 
 
 smalltalk.addClass('RegularExpression', smalltalk.Object, [], 'Kernel');

+ 0 - 0
js/Parser.js


+ 0 - 0
js/SUnit.js


+ 0 - 12
js/boot.js

@@ -102,11 +102,6 @@ function Smalltalk(){
 	var subclasses = st.subclasses(klass);
 	var methods;
 
-	// Initializing inst vars
-	for(var i=0;i<klass.iVarNames.length;i++) {
-	    klass.fn.prototype["@"+klass.iVarNames[i]] = nil;
-	}
-
 	if(klass.superclass && klass.superclass !== nil) {
 	    methods = st.methods(klass.superclass);
 
@@ -117,13 +112,6 @@ function Smalltalk(){
 		    klass.fn.prototype[methods[i].jsSelector] = methods[i].fn;
 		}
 	    }
-
-	    //Instance variables linking
-	    for(var i=0;i<klass.superclass.iVarNames.length;i++) {
-		if(!klass["@"+klass.superclass.iVarNames[i]]) {
-		    klass.fn.prototype["@"+klass.superclass.iVarNames[i]] = nil;
-		}
-	    }
 	}
 
 	for(var i=0;i<subclasses.length;i++) {

+ 0 - 0
js/init.js


+ 0 - 0
js/jquery-1.4.4.min.js


+ 0 - 0
js/jquery-ui-1.8.9.custom.min.js


+ 0 - 0
js/jquery.textarea.js


+ 0 - 0
js/jtalk.deploy.js


+ 0 - 0
js/jtalk.js


+ 0 - 0
st/Benchfib.st


+ 13 - 22
st/Canvas.st

@@ -209,6 +209,18 @@ a
 
 canvas
 	^self tag: 'canvas'
+!
+
+pre
+    ^self tag: 'pre'
+!
+
+code
+    ^self tag: 'code'
+!
+
+br
+    ^self tag: 'br'
 ! !
 
 !HTMLCanvas class methodsFor: 'instance creation'!
@@ -381,15 +393,9 @@ fromJQuery: aJQuery canvas: aCanvas
 ! !
 
 Object subclass: #Widget
-	instanceVariableNames: 'root'
+	instanceVariableNames: ''
 	category: 'Canvas'!
 
-!Widget methodsFor: 'accessing'!
-
-root
-    ^root
-! !
-
 !Widget methodsFor: 'actions'!
 
 alert: aString
@@ -406,14 +412,6 @@ prompt: aString
 
 prompt: aString default: anotherString
     <return window.prompt(aString, anotherString)>
-!
-
-update
-    | canvas |
-    canvas := HTMLCanvas new.
-    canvas root: self root.
-    self root asJQuery empty.
-    self renderOn: canvas
 ! !
 
 !Widget methodsFor: 'adding'!
@@ -428,13 +426,6 @@ appendToJQuery: aJQuery
 
 !Widget methodsFor: 'rendering'!
 
-render
-    | canvas |
-    canvas := HTMLCanvas new.
-    root := canvas root.
-    self renderOn: canvas
-!
-
 renderOn: html
     self
 ! !

+ 2 - 2
st/Compiler.st

@@ -654,7 +654,7 @@ visitClassReferenceNode: aNode
 !
 
 visitVariableNode: aNode
-	(self currentClass instanceVariableNames includes: aNode value) 
+	(self currentClass allInstanceVariableNames includes: aNode value) 
 		ifTrue: [stream nextPutAll: 'self[''@', aNode value, ''']']
 		ifFalse: [
 			(self knownVariables includes: aNode value) ifFalse: [
@@ -691,6 +691,6 @@ Object subclass: #DoIt
 
 !DoIt methodsFor: ''!
 
-doIt ^[Compiler new recompileAll] value
+doIt ^[ESUG2011Presentation new] value
 ! !
 

+ 0 - 0
st/Examples.st


+ 2 - 1
st/IDE.st

@@ -588,7 +588,7 @@ cancelChanges
 removeClass
     (self confirm: 'Do you really want to remove ', selectedClass name, '?')
 	ifTrue: [
-	    Smalltalk current basicDelete: selectedClass name.
+	    Smalltalk current removeClass: selectedClass.
 	    self resetClassesList.
 	    self selectClass: nil]
 !
@@ -1710,6 +1710,7 @@ inspectOn: anInspector
 	variables at: '#home' put: self home.
 	variables at: '#receiver' put: self receiver.
 	variables at: '#selector' put: self selector.
+	variables at: '#temps' put: self temps.
 	self class instanceVariableNames do: [:each |
 		variables at: each put: (self instVarAt: each)].
 	anInspector 

+ 4 - 0
st/JQuery.st

@@ -237,6 +237,10 @@ fromElement: anElement
     | newJQuery |
     <newJQuery = jQuery(anElement)>.
     ^self from: newJQuery
+!
+
+documentReady: aBlock
+	<jQuery(document).ready(aBlock)>
 ! !
 
 Object subclass: #Ajax

+ 31 - 2
st/Kernel.st

@@ -253,6 +253,15 @@ readJSON: anObject
 
 at: aString
 	<return self[aString]>
+!
+
+removeClass: aClass
+	aClass isMetaclass ifTrue: [self error: aClass asString, ' is a Metaclass and cannot be removed!!'].
+	aClass methodDictionary values do: [:each |
+		aClass removeCompiledMethod: each].
+	aClass class methodDictionary values do: [:each |
+		aClass class removeCompiledMethod: each].
+	self basicDelete: aClass name
 ! !
 
 Smalltalk class instanceVariableNames: 'current'!
@@ -338,7 +347,8 @@ commentStamp
 
 removeCompiledMethod: aMethod
 	<delete self.fn.prototype[aMethod.selector._asSelector()];
-	delete self.fn.prototype.methods[aMethod.selector]>
+	delete self.fn.prototype.methods[aMethod.selector];
+	smalltalk.init(self);>
 !
 
 protocols
@@ -365,7 +375,7 @@ protocolsDo: aBlock
 
 allInstanceVariableNames
 	| result |
-	result := self instanceVariableNames.
+	result := self instanceVariableNames copy.
 	self superclass ifNotNil: [
 	    result addAll: self superclass allInstanceVariableNames].
 	^result
@@ -1422,6 +1432,14 @@ asCharacterParser
 
 asJSONObject
 	^self
+!
+
+asLowercase
+	<return self.toLowerCase()>
+!
+
+asUppercase
+	<return self.toUpperCase()>
 ! !
 
 !String methodsFor: 'copying'!
@@ -1641,6 +1659,17 @@ sorted
 
 sorted: aBlock
 	^self copy sorted: aBlock
+!
+
+printString
+	| str |
+	str := '' writeStream.
+	str nextPutAll: super printString, ' ('.
+	self 
+		do: [:each | str nextPutAll: each printString]
+		separatedBy: [str nextPutAll: ' '].
+	str nextPutAll: ')'.
+	^str contents
 ! !
 
 Object subclass: #RegularExpression

+ 0 - 0
st/Parser.st


+ 0 - 0
st/SUnit.st