1
0
Преглед на файлове

Merge branch 'master', remote-tracking branch 'lolgzs/master'

Nicolas Petton преди 13 години
родител
ревизия
c7a17850e4
променени са 20 файла, в които са добавени 405 реда и са изтрити 78 реда
  1. 0 0
      js/Benchfib.deploy.js
  2. 19 8
      js/Canvas.deploy.js
  3. 25 6
      js/Canvas.js
  4. 0 0
      js/Examples.deploy.js
  5. 0 0
      js/IDE.js
  6. 0 0
      js/JQuery-Tests.deploy.js
  7. 77 0
      js/JQuery.deploy.js
  8. 105 0
      js/JQuery.js
  9. 14 0
      js/Kernel-Tests.deploy.js
  10. 19 1
      js/Kernel-Tests.js
  11. 11 0
      js/Kernel.deploy.js
  12. 15 0
      js/Kernel.js
  13. 0 0
      js/Parser.js
  14. 59 59
      js/jtalk.js
  15. 14 3
      st/Canvas.st
  16. 0 0
      st/IDE.st
  17. 31 0
      st/JQuery.st
  18. 11 1
      st/Kernel-Tests.st
  19. 5 0
      st/Kernel.st
  20. 0 0
      st/Parser.st

+ 0 - 0
js/Benchfib.deploy.js


+ 19 - 8
js/Canvas.deploy.js

@@ -579,14 +579,10 @@ smalltalk.addMethod(
 '_style',
 smalltalk.method({
 selector: 'style',
-category: 'tags',
 fn: function (){
 var self=this;
 return smalltalk.send(self, "_tag_", ["style"]);
-return self;},
-source: unescape('style%0A%09%5Eself%20tag%3A%20%27style%27'),
-messageSends: ["tag:"],
-referencedClasses: []
+return self;}
 }),
 smalltalk.HTMLCanvas);
 
@@ -610,8 +606,7 @@ smalltalk.method({
 selector: 'contents:',
 fn: function (anObject){
 var self=this;
-smalltalk.send(smalltalk.send(self, "_asJQuery", []), "_empty", []);
-smalltalk.send(self, "_append_", [anObject]);
+(function($rec){smalltalk.send($rec, "_empty", []);return smalltalk.send($rec, "_append_", [anObject]);})(self);
 return self;}
 }),
 smalltalk.TagBrush);
@@ -682,7 +677,12 @@ smalltalk.method({
 selector: 'appendChild:',
 fn: function (anElement){
 var self=this;
-self['@element'].appendChild(anElement);
+var element=self['@element'];
+      if (null == element.canHaveChildren || element.canHaveChildren) {
+    	element.appendChild(anElement);
+       } else {
+    	element.text = String(element.text) +  anElement.innerHTML;
+      } ;
 return self;}
 }),
 smalltalk.TagBrush);
@@ -975,6 +975,17 @@ return self;}
 }),
 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(
 '_fromString_canvas_',

+ 25 - 6
js/Canvas.js

@@ -823,11 +823,10 @@ selector: 'contents:',
 category: 'adding',
 fn: function (anObject){
 var self=this;
-smalltalk.send(smalltalk.send(self, "_asJQuery", []), "_empty", []);
-smalltalk.send(self, "_append_", [anObject]);
+(function($rec){smalltalk.send($rec, "_empty", []);return smalltalk.send($rec, "_append_", [anObject]);})(self);
 return self;},
-source: unescape('contents%3A%20anObject%0A%20%20%20%20self%20asJQuery%20empty.%0A%20%20%20%20self%20append%3A%20anObject'),
-messageSends: ["empty", "asJQuery", "append:"],
+source: unescape('contents%3A%20anObject%0A%20%20%20%20self%20%0A%09empty%3B%0A%20%20%20%20%09append%3A%20anObject'),
+messageSends: ["empty", "append:"],
 referencedClasses: []
 }),
 smalltalk.TagBrush);
@@ -919,9 +918,14 @@ selector: 'appendChild:',
 category: 'adding',
 fn: function (anElement){
 var self=this;
-self['@element'].appendChild(anElement);
+var element=self['@element'];
+      if (null == element.canHaveChildren || element.canHaveChildren) {
+    	element.appendChild(anElement);
+       } else {
+    	element.text = String(element.text) +  anElement.innerHTML;
+      } ;
 return self;},
-source: unescape('appendChild%3A%20anElement%0A%20%20%20%20%3Cself%5B%27@element%27%5D.appendChild%28anElement%29%3E'),
+source: unescape('appendChild%3A%20anElement%0A%20%20%20%22In%20IE7%20and%20IE8%20appendChild%20fails%20on%20several%20node%20types.%20So%20we%20need%20to%20check%22%20%0A%20%20%20%20%3Cvar%20element%3Dself%5B%27@element%27%5D%3B%0A%20%20%20%20%20%20if%20%28null%20%3D%3D%20element.canHaveChildren%20%7C%7C%20element.canHaveChildren%29%20%7B%0A%20%20%20%20%09element.appendChild%28anElement%29%3B%0A%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%09element.text%20%3D%20String%28element.text%29%20+%20%20anElement.innerHTML%3B%0A%20%20%20%20%20%20%7D%20%3E'),
 messageSends: [],
 referencedClasses: []
 }),
@@ -1319,6 +1323,21 @@ referencedClasses: []
 }),
 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;},
+source: unescape('empty%0A%20%20%20%20self%20asJQuery%20empty'),
+messageSends: ["empty", "asJQuery"],
+referencedClasses: []
+}),
+smalltalk.TagBrush);
+
 
 smalltalk.addMethod(
 '_fromString_canvas_',

+ 0 - 0
js/Examples.deploy.js


+ 0 - 0
js/IDE.js


+ 0 - 0
js/JQuery-Tests.deploy.js


+ 77 - 0
js/JQuery.deploy.js

@@ -495,6 +495,83 @@ return self;}
 }),
 smalltalk.JQuery);
 
+smalltalk.addMethod(
+'_fadeIn',
+smalltalk.method({
+selector: 'fadeIn',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_call_", ["fadeIn"]);
+return self;}
+}),
+smalltalk.JQuery);
+
+smalltalk.addMethod(
+'_slideDown',
+smalltalk.method({
+selector: 'slideDown',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_call_", ["slideDown"]);
+return self;}
+}),
+smalltalk.JQuery);
+
+smalltalk.addMethod(
+'_fadeInSlow',
+smalltalk.method({
+selector: 'fadeInSlow',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_call_withArgument_", ["fadeIn", "slow"]);
+return self;}
+}),
+smalltalk.JQuery);
+
+smalltalk.addMethod(
+'_fadeOut',
+smalltalk.method({
+selector: 'fadeOut',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_call_", ["fadeOut"]);
+return self;}
+}),
+smalltalk.JQuery);
+
+smalltalk.addMethod(
+'_fadeOutSlow',
+smalltalk.method({
+selector: 'fadeOutSlow',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_call_withArgument_", ["fadeOut", "slow"]);
+return self;}
+}),
+smalltalk.JQuery);
+
+smalltalk.addMethod(
+'_slideUp',
+smalltalk.method({
+selector: 'slideUp',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_call_", ["slideUp"]);
+return self;}
+}),
+smalltalk.JQuery);
+
+smalltalk.addMethod(
+'_onLoadDo_',
+smalltalk.method({
+selector: 'onLoadDo:',
+fn: function (aBlock){
+var self=this;
+smalltalk.send(self, "_call_withArgument_", ["load", aBlock]);
+return self;}
+}),
+smalltalk.JQuery);
+
 
 smalltalk.addMethod(
 '_fromString_',

+ 105 - 0
js/JQuery.js

@@ -675,6 +675,111 @@ referencedClasses: []
 }),
 smalltalk.JQuery);
 
+smalltalk.addMethod(
+'_fadeIn',
+smalltalk.method({
+selector: 'fadeIn',
+category: 'effects',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_call_", ["fadeIn"]);
+return self;},
+source: unescape('fadeIn%0A%20%20%20%20self%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;},
+source: unescape('slideDown%0A%20%20%20%20self%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;},
+source: unescape('fadeInSlow%0A%20%20%20%20self%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;},
+source: unescape('fadeOut%0A%20%20%20%20self%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;},
+source: unescape('fadeOutSlow%0A%20%20%20%20self%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;},
+source: unescape('slideUp%0A%20%20%20%20self%20call%3A%20%27slideUp%27'),
+messageSends: ["call:"],
+referencedClasses: []
+}),
+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;},
+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(
 '_fromString_',

+ 14 - 0
js/Kernel-Tests.deploy.js

@@ -49,6 +49,20 @@ smalltalk.DictionaryTest);
 
 
 
+smalltalk.addClass('NumberTest', smalltalk.TestCase, [], 'Kernel-Tests');
+smalltalk.addMethod(
+'_testNegated',
+smalltalk.method({
+selector: 'testNegated',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", [(($receiver = smalltalk.send((3), "_negated", [])).klass === smalltalk.Number) ? $receiver +(4) : smalltalk.send($receiver, "__plus", [(4)]), (1)]);
+return self;}
+}),
+smalltalk.NumberTest);
+
+
+
 smalltalk.addClass('BooleanTest', smalltalk.TestCase, [], 'Kernel-Tests');
 smalltalk.addMethod(
 '_testLogic',

+ 19 - 1
js/Kernel-Tests.js

@@ -65,12 +65,30 @@ smalltalk.DictionaryTest);
 
 
 
+smalltalk.addClass('NumberTest', smalltalk.TestCase, [], 'Kernel-Tests');
+smalltalk.addMethod(
+'_testNegated',
+smalltalk.method({
+selector: 'testNegated',
+category: 'tests',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", [(($receiver = smalltalk.send((3), "_negated", [])).klass === smalltalk.Number) ? $receiver +(4) : smalltalk.send($receiver, "__plus", [(4)]), (1)]);
+return self;},
+source: unescape('testNegated%0A%09self%20assert%3A%20%283%20negated%20+%204%29%20equals%3A%201'),
+messageSends: ["assert:equals:", unescape("+"), "negated"],
+referencedClasses: []
+}),
+smalltalk.NumberTest);
+
+
+
 smalltalk.addClass('BooleanTest', smalltalk.TestCase, [], 'Kernel-Tests');
 smalltalk.addMethod(
 '_testLogic',
 smalltalk.method({
 selector: 'testLogic',
-category: 'not yet classified',
+category: 'tests',
 fn: function (){
 var self=this;
 (function($rec){smalltalk.send($rec, "_assert_", [smalltalk.send(true, "_&", [true])]);smalltalk.send($rec, "_deny_", [smalltalk.send(true, "_&", [false])]);smalltalk.send($rec, "_deny_", [smalltalk.send(false, "_&", [true])]);return smalltalk.send($rec, "_deny_", [smalltalk.send(false, "_&", [false])]);})(self);

+ 11 - 0
js/Kernel.deploy.js

@@ -1465,6 +1465,17 @@ return self;}
 }),
 smalltalk.Number);
 
+smalltalk.addMethod(
+'_negated',
+smalltalk.method({
+selector: 'negated',
+fn: function (){
+var self=this;
+return (0) - self;
+return self;}
+}),
+smalltalk.Number);
+
 
 smalltalk.addMethod(
 '_pi',

+ 15 - 0
js/Kernel.js

@@ -1969,6 +1969,21 @@ referencedClasses: []
 }),
 smalltalk.Number);
 
+smalltalk.addMethod(
+'_negated',
+smalltalk.method({
+selector: 'negated',
+category: 'arithmetic',
+fn: function (){
+var self=this;
+return (0) - self;
+return self;},
+source: unescape('negated%0A%09%22Answer%20a%20Number%20that%20is%20the%20negation%20of%20the%20receiver.%22%0A%09%5E%200%20-%20self'),
+messageSends: [unescape("-")],
+referencedClasses: []
+}),
+smalltalk.Number);
+
 
 smalltalk.addMethod(
 '_pi',

+ 0 - 0
js/Parser.js


+ 59 - 59
js/jtalk.js

@@ -1,78 +1,78 @@
 /* Adapted from Clamato by Avi Bryant. http://www.clamato.net */
 
 (function() {
-    var scripts = document.getElementsByTagName("script");
-    var src = scripts[ scripts.length - 1 ].src;
-    var home = src.split("/").slice(0, -2).join("/") + "/";
-    
-    function loadJS(name, prefix) {
-	var prefix = prefix || 'js';
-	document.write('<script src="' + home + prefix + '/' + name + '" type="text/javascript"></script>');
-    }
-    
-    function loadCSS(name, prefix) {
-	var prefix = prefix || 'css';
-	var link = document.createElement("link")
+  var scripts = document.getElementsByTagName("script");
+  var src = scripts[ scripts.length - 1 ].src;
+  var home = src.split("/").slice(0, -2).join("/") + "/";
+  
+  function loadJS(name, prefix) {
+		var prefix = prefix || 'js';
+		document.write('<script src="' + home + prefix + '/' + name + '" type="text/javascript"></script>');
+  }
+  
+  function loadCSS(name, prefix) {
+		var prefix = prefix || 'css';
+		var link = document.createElement("link")
   	link.setAttribute("rel", "stylesheet")
   	link.setAttribute("type", "text/css")
   	link.setAttribute("href", home + prefix + '/' + name)
-	document.getElementsByTagName("head")[0].appendChild(link);
-    }
+		document.getElementsByTagName("head")[0].appendChild(link);
+  }
 
-    function loadDependencies() {
-	loadJS('lib/jQuery/jquery-1.6.2.min.js');
-	loadJS('lib/jQuery/jquery-ui-1.8.9.custom.min.js');
-    }
+  function loadDependencies() {
+		loadJS('lib/jQuery/jquery-1.6.2.min.js');
+		loadJS('lib/jQuery/jquery-ui-1.8.9.custom.min.js');
+  }
 
-    function loadIDEDependencies() {
-	loadJS('lib/jQuery/jquery.textarea.js');
-	loadJS('lib/CodeMirror/lib/codemirror.js');
-	loadCSS('lib/CodeMirror/lib/codemirror.css', 'js');
-	loadJS('lib/CodeMirror/mode/smalltalk/smalltalk.js');
-	loadCSS('lib/CodeMirror/theme/jtalk.css', 'js');
-    }
+  function loadIDEDependencies() {
+		loadJS('lib/jQuery/jquery.textarea.js');
+		loadJS('lib/CodeMirror/lib/codemirror.js');
+		loadCSS('lib/CodeMirror/lib/codemirror.css', 'js');
+		loadJS('lib/CodeMirror/mode/smalltalk/smalltalk.js');
+		loadCSS('lib/CodeMirror/theme/jtalk.css', 'js');
+  }
 
-    window.loadJtalk = function(files, prefix) {
-	loadDependencies();
-	loadIDEDependencies();
-	loadCSS('jtalk.css');
-	loadCSS('sunit.css');
-	loadJS("boot.js");
-	loadJS("Kernel.js");
-	loadJS("Canvas.js");
-	loadJS("JQuery.js");
-	loadJS("Parser.js");
-	loadJS("Compiler.js");
-	loadJS("IDE.js");
-	loadJS("SUnit.js");
-	loadJS("Examples.js");
-	loadJS("Benchfib.js");
-	loadJS("Kernel-Tests.js");
-	loadJS("JQuery-Tests.js");
+  window.loadJtalk = function(files, prefix) {
+		loadDependencies();
+		loadIDEDependencies();
+		loadCSS('jtalk.css');
+		loadCSS('sunit.css');
+		loadJS("boot.js");
+		loadJS("Kernel.js");
+		loadJS("Canvas.js");
+		loadJS("JQuery.js");
+		loadJS("Parser.js");
+		loadJS("Compiler.js");
+		loadJS("IDE.js");
+		loadJS("SUnit.js");
+		loadJS("Examples.js");
+		loadJS("Benchfib.js");
+		loadJS("Kernel-Tests.js");
+		loadJS("JQuery-Tests.js");
 
-	if(files) {
+		if(files) {
 	    for(var i=0; i < files.length; i++) {
-		loadJS(files[i], prefix);
+				loadJS(files[i], prefix);
 	    }
-	}
+		}
 
-	loadJS("init.js");
-    }
+		loadJS("init.js");
+  }
 
-    window.loadJtalkDeploy = function(files, prefix) {
-	loadDependencies();
-	loadJS("boot.js");
-	loadJS("Kernel.deploy.js");
-	loadJS("Canvas.deploy.js");
-	loadJS("JQuery.deploy.js");
+  window.loadJtalkDeploy = function(files, prefix) {
+		loadDependencies();
+		loadJS("boot.js");
+		loadJS("Kernel.deploy.js");
+		loadJS("Canvas.deploy.js");
+		loadJS("JQuery.deploy.js");
 
-	if(files){
+		if(files){
 	    for(var i=0; i < files.length; i++) {
-		loadJS(files[i], prefix);
+				loadJS(files[i], prefix);
 	    }
-	}
+		}
 
-	loadJS("init.js");
-	loadJS("deploy.js");
-    }
+		loadJS("init.js");
+		loadJS("deploy.js");
+  }
 })();

+ 14 - 3
st/Canvas.st

@@ -257,8 +257,9 @@ element
 !TagBrush methodsFor: 'adding'!
 
 contents: anObject
-    self asJQuery empty.
-    self append: anObject
+    self 
+	empty;
+    	append: anObject
 !
 
 addBrush: aTagBrush
@@ -287,11 +288,21 @@ appendBlock: aBlock
 !
 
 appendChild: anElement
-    <self['@element'].appendChild(anElement)>
+   "In IE7 and IE8 appendChild fails on several node types. So we need to check" 
+    <var element=self['@element'];
+      if (null == element.canHaveChildren || element.canHaveChildren) {
+    	element.appendChild(anElement);
+       } else {
+    	element.text = String(element.text) +  anElement.innerHTML;
+      } >
 !
 
 appendString: aString
     self appendChild: (self createTextNodeFor: aString)
+!
+
+empty
+    self asJQuery empty
 ! !
 
 !TagBrush methodsFor: 'attributes'!

+ 0 - 0
st/IDE.st


+ 31 - 0
st/JQuery.st

@@ -161,6 +161,32 @@ scrollTop: anInteger
     self call: 'scrollTop' withArgument: anInteger
 ! !
 
+!JQuery methodsFor: 'effects'!
+
+fadeIn
+    self call: 'fadeIn'
+!
+
+slideDown
+    self call: 'slideDown'
+!
+
+fadeInSlow
+    self call: 'fadeIn' withArgument: 'slow'
+!
+
+fadeOut
+    self call: 'fadeOut'
+!
+
+fadeOutSlow
+    self call: 'fadeOut' withArgument: 'slow'
+!
+
+slideUp
+    self call: 'slideUp'
+! !
+
 !JQuery methodsFor: 'enumerating'!
 
 do: aBlock
@@ -193,6 +219,11 @@ on: anEventString do: aBlock
 removeEvents: aString
     "Unbind all handlers attached to the event aString"
     self call: 'unbind' withArgument: aString
+!
+
+onLoadDo: aBlock
+	"Bind an event handler to the 'load' JavaScript event."
+	self call: 'load' withArgument: aBlock
 ! !
 
 !JQuery methodsFor: 'initialization'!

+ 11 - 1
st/Kernel-Tests.st

@@ -36,11 +36,21 @@ testPrintString
                         	printString)
 ! !
 
+TestCase subclass: #NumberTest
+	instanceVariableNames: ''
+	category: 'Kernel-Tests'!
+
+!NumberTest methodsFor: 'tests'!
+
+testNegated
+	self assert: (3 negated + 4) equals: 1
+! !
+
 TestCase subclass: #BooleanTest
 	instanceVariableNames: ''
 	category: 'Kernel-Tests'!
 
-!BooleanTest methodsFor: 'not yet classified'!
+!BooleanTest methodsFor: 'tests'!
 
 testLogic
 

+ 5 - 0
st/Kernel.st

@@ -568,6 +568,11 @@ min: aNumber
 
 modulo: aNumber
 	<return self % aNumber>
+!
+
+negated
+	"Answer a Number that is the negation of the receiver."
+	^ 0 - self
 ! !
 
 !Number methodsFor: 'comparing'!

+ 0 - 0
st/Parser.st