Browse Source

- Fix issue #116
- Use symbols instead of strings in Smalltalk >> #at: and Behavior >> methodAt:

Nicolas Petton 12 years ago
parent
commit
2c54dcd968

+ 2 - 2
js/Kernel-Classes.deploy.js

@@ -189,9 +189,9 @@ smalltalk.addMethod(
 "_methodAt_",
 smalltalk.method({
 selector: "methodAt:",
-fn: function (aString){
+fn: function (aSymbol){
 var self=this;
-return smalltalk.methods(self)[aString];
+return smalltalk.methods(self)[aSymbol._asString()];
 ;
 return self}
 }),

+ 4 - 4
js/Kernel-Classes.js

@@ -256,13 +256,13 @@ smalltalk.addMethod(
 smalltalk.method({
 selector: "methodAt:",
 category: 'accessing',
-fn: function (aString){
+fn: function (aSymbol){
 var self=this;
-return smalltalk.methods(self)[aString];
+return smalltalk.methods(self)[aSymbol._asString()];
 ;
 return self},
-args: ["aString"],
-source: "methodAt: aString\x0a\x09<return smalltalk.methods(self)[aString]>",
+args: ["aSymbol"],
+source: "methodAt: aSymbol\x0a\x09<return smalltalk.methods(self)[aSymbol._asString()]>",
 messageSends: [],
 referencedClasses: []
 }),

+ 13 - 0
js/Kernel-Collections.deploy.js

@@ -3152,6 +3152,19 @@ return $1;
 }),
 smalltalk.Symbol);
 
+smalltalk.addMethod(
+"_value_",
+smalltalk.method({
+selector: "value:",
+fn: function (anObject){
+var self=this;
+var $1;
+$1=smalltalk.send(anObject,"_perform_",[self]);
+return $1;
+}
+}),
+smalltalk.Symbol);
+
 smalltalk.addMethod(
 "_withIndexDo_",
 smalltalk.method({

+ 18 - 0
js/Kernel-Collections.js

@@ -4253,6 +4253,24 @@ referencedClasses: []
 }),
 smalltalk.Symbol);
 
+smalltalk.addMethod(
+"_value_",
+smalltalk.method({
+selector: "value:",
+category: 'evaluating',
+fn: function (anObject){
+var self=this;
+var $1;
+$1=smalltalk.send(anObject,"_perform_",[self]);
+return $1;
+},
+args: ["anObject"],
+source: "value: anObject \x0a\x09^anObject perform: self",
+messageSends: ["perform:"],
+referencedClasses: []
+}),
+smalltalk.Symbol);
+
 smalltalk.addMethod(
 "_withIndexDo_",
 smalltalk.method({

+ 5 - 5
js/Kernel-Objects.deploy.js

@@ -2810,11 +2810,11 @@ smalltalk.addMethod(
 "_at_",
 smalltalk.method({
 selector: "at:",
-fn: function (aString) {
-    var self = this;
-    return self[aString];
-    return self;
-}
+fn: function (aSymbol){
+var self=this;
+return self[aSymbol._asString()];
+;
+return self}
 }),
 smalltalk.Smalltalk);
 

+ 7 - 7
js/Kernel-Objects.js

@@ -3875,13 +3875,13 @@ smalltalk.addMethod(
 smalltalk.method({
 selector: "at:",
 category: 'accessing',
-fn: function (aString) {
-    var self = this;
-    return self[aString];
-    return self;
-},
-args: ["aString"],
-source: "at: aString\x0a\x09<return self[aString]>",
+fn: function (aSymbol){
+var self=this;
+return self[aSymbol._asString()];
+;
+return self},
+args: ["aSymbol"],
+source: "at: aSymbol\x0a\x09<return self[aSymbol._asString()]>",
 messageSends: [],
 referencedClasses: []
 }),

+ 2 - 2
st/Kernel-Classes.st

@@ -51,8 +51,8 @@ instanceVariableNames
 	<return self.iVarNames>
 !
 
-methodAt: aString
-	<return smalltalk.methods(self)[aString]>
+methodAt: aSymbol
+	<return smalltalk.methods(self)[aSymbol._asString()]>
 !
 
 methodDictionary

+ 6 - 0
st/Kernel-Collections.st

@@ -1351,6 +1351,12 @@ withIndexDo: aBlock
 	self asString withIndexDo: aBlock
 ! !
 
+!Symbol methodsFor: 'evaluating'!
+
+value: anObject 
+	^anObject perform: self
+! !
+
 !Symbol methodsFor: 'printing'!
 
 isSymbol

+ 2 - 2
st/Kernel-Objects.st

@@ -1365,8 +1365,8 @@ It requires the `Compiler` package and the `js/parser.js` parser file in order t
 
 !Smalltalk methodsFor: 'accessing'!
 
-at: aString
-	<return self[aString]>
+at: aSymbol
+	<return self[aSymbol._asString()]>
 !
 
 basicParse: aString