resin 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/amber/css/amber-normalize.css +73 -73
- data/amber/css/amber-normalize.less +1 -1
- data/amber/css/amber.css +106 -106
- data/amber/css/helios.css +242 -0
- data/amber/images/hsplitter.png +0 -0
- data/amber/images/vsplitter.png +0 -0
- data/amber/js/Benchfib.deploy.js +116 -38
- data/amber/js/Benchfib.js +120 -42
- data/amber/js/Canvas.deploy.js +674 -403
- data/amber/js/Canvas.js +682 -411
- data/amber/js/Compiler-AST.deploy.js +1150 -0
- data/amber/js/Compiler-AST.js +1591 -0
- data/amber/js/Compiler-Core.deploy.js +1562 -0
- data/amber/js/Compiler-Core.js +1972 -0
- data/amber/js/Compiler-Exceptions.deploy.js +114 -0
- data/amber/js/Compiler-Exceptions.js +161 -0
- data/amber/js/Compiler-IR.deploy.js +2326 -0
- data/amber/js/Compiler-IR.js +3146 -0
- data/amber/js/Compiler-Inlining.deploy.js +1147 -0
- data/amber/js/Compiler-Inlining.js +1514 -0
- data/amber/js/Compiler-Semantic.deploy.js +1207 -0
- data/amber/js/Compiler-Semantic.js +1628 -0
- data/amber/js/Compiler-Tests.deploy.js +646 -60
- data/amber/js/Compiler-Tests.js +843 -82
- data/amber/js/Compiler.deploy.js +1097 -159
- data/amber/js/Compiler.js +1414 -161
- data/amber/js/Examples.deploy.js +31 -15
- data/amber/js/Examples.js +33 -17
- data/amber/js/Helios-Announcements.deploy.js +127 -0
- data/amber/js/Helios-Announcements.js +157 -0
- data/amber/js/Helios-Browser.deploy.js +1473 -0
- data/amber/js/Helios-Browser.js +1953 -0
- data/amber/js/Helios-Commands.deploy.js +403 -0
- data/amber/js/Helios-Commands.js +563 -0
- data/amber/js/Helios-Core.deploy.js +1070 -0
- data/amber/js/Helios-Core.js +1445 -0
- data/amber/js/Helios-Environments.deploy.js +132 -0
- data/amber/js/Helios-Environments.js +179 -0
- data/amber/js/Helios-Inspector.deploy.js +855 -0
- data/amber/js/Helios-Inspector.js +1155 -0
- data/amber/js/Helios-KeyBindings.deploy.js +753 -0
- data/amber/js/Helios-KeyBindings.js +1023 -0
- data/amber/js/Helios-Layout.deploy.js +383 -0
- data/amber/js/Helios-Layout.js +523 -0
- data/amber/js/Helios-Workspace.deploy.js +799 -0
- data/amber/js/Helios-Workspace.js +1074 -0
- data/amber/js/IDE.deploy.js +2541 -1490
- data/amber/js/IDE.js +2721 -1660
- data/amber/js/Importer-Exporter.deploy.js +671 -0
- data/amber/js/Importer-Exporter.js +816 -0
- data/amber/js/Kernel-Announcements.deploy.js +137 -20
- data/amber/js/Kernel-Announcements.js +176 -22
- data/amber/js/Kernel-Classes.deploy.js +555 -168
- data/amber/js/Kernel-Classes.js +662 -205
- data/amber/js/Kernel-Collections.deploy.js +1403 -618
- data/amber/js/Kernel-Collections.js +1545 -690
- data/amber/js/Kernel-Exceptions.deploy.js +109 -45
- data/amber/js/Kernel-Exceptions.js +123 -49
- data/amber/js/Kernel-Methods.deploy.js +196 -81
- data/amber/js/Kernel-Methods.js +214 -89
- data/amber/js/Kernel-Objects.deploy.js +1542 -1117
- data/amber/js/Kernel-Objects.js +1593 -1148
- data/amber/js/Kernel-Tests.deploy.js +1725 -772
- data/amber/js/Kernel-Tests.js +2301 -1123
- data/amber/js/Kernel-Transcript.deploy.js +23 -25
- data/amber/js/Kernel-Transcript.js +24 -26
- data/amber/js/SUnit.deploy.js +204 -131
- data/amber/js/SUnit.js +222 -139
- data/amber/js/Spaces.deploy.js +240 -0
- data/amber/js/Spaces.js +326 -0
- data/amber/js/amber.js +26 -7
- data/amber/js/boot.js +65 -47
- data/amber/js/init.js +1 -1
- data/amber/js/lib/CodeMirror/amber.css +21 -21
- data/amber/js/lib/CodeMirror/codemirror.css +119 -13
- data/amber/js/lib/CodeMirror/codemirror.js +2219 -1220
- data/amber/js/lib/CodeMirror/smalltalk.js +134 -129
- data/amber/js/lib/bootstrap/css/bootstrap.css +5837 -0
- data/amber/js/lib/bootstrap/css/bootstrap.min.css +841 -0
- data/amber/js/lib/bootstrap/img/glyphicons-halflings-white.png +0 -0
- data/amber/js/lib/bootstrap/img/glyphicons-halflings.png +0 -0
- data/amber/js/lib/bootstrap/js/bootstrap.js +2038 -0
- data/amber/js/lib/bootstrap/js/bootstrap.min.js +7 -0
- data/amber/js/lib/jQuery/jquery-1.8.2.min.js +2 -0
- data/amber/js/lib/jQuery/jquery-ui-1.8.24.custom.min.js +125 -0
- data/amber/st/Compiler-AST.st +505 -0
- data/amber/st/Compiler-Core.st +835 -0
- data/amber/st/Compiler-Exceptions.st +87 -0
- data/amber/st/Compiler-IR.st +1097 -0
- data/amber/st/Compiler-Inlining.st +650 -0
- data/amber/st/Compiler-Semantic.st +558 -0
- data/amber/st/Compiler-Tests.st +285 -381
- data/amber/st/Compiler.st +725 -2
- data/amber/st/Helios-Announcements.st +104 -0
- data/amber/st/Helios-Browser.st +708 -0
- data/amber/st/Helios-Commands.st +223 -0
- data/amber/st/Helios-Core.st +532 -0
- data/amber/st/Helios-Environments.st +98 -0
- data/amber/st/Helios-Inspector.st +367 -0
- data/amber/st/Helios-KeyBindings.st +337 -0
- data/amber/st/Helios-Layout.st +199 -0
- data/amber/st/Helios-Workspace.st +367 -0
- data/amber/st/IDE.st +75 -53
- data/amber/st/Importer-Exporter.st +386 -0
- data/amber/st/Kernel-Announcements.st +92 -0
- data/amber/st/Kernel-Classes.st +137 -15
- data/amber/st/Kernel-Collections.st +137 -47
- data/amber/st/Kernel-Exceptions.st +14 -0
- data/amber/st/Kernel-Methods.st +9 -1
- data/amber/st/Kernel-Objects.st +29 -5
- data/amber/st/Kernel-Tests.st +545 -199
- data/amber/st/SUnit.st +10 -0
- data/amber/st/Spaces.st +142 -0
- data/lib/resin/app.rb +1 -1
- metadata +86 -31
- data/amber/js/lib/jQuery/jquery-1.4.4.min.js +0 -167
- data/amber/js/lib/jQuery/jquery-1.6.4.min.js +0 -4
data/amber/js/Kernel-Classes.js
CHANGED
@@ -8,12 +8,19 @@ selector: "addCompiledMethod:",
|
|
8
8
|
category: 'compiling',
|
9
9
|
fn: function (aMethod){
|
10
10
|
var self=this;
|
11
|
+
var $1,$2;
|
11
12
|
smalltalk.addMethod(aMethod.selector._asSelector(), aMethod, self);
|
12
|
-
|
13
|
+
;
|
14
|
+
$1=smalltalk.send((smalltalk.MethodAdded || MethodAdded),"_new",[]);
|
15
|
+
smalltalk.send($1,"_theClass_",[self]);
|
16
|
+
smalltalk.send($1,"_method_",[aMethod]);
|
17
|
+
$2=smalltalk.send($1,"_yourself",[]);
|
18
|
+
smalltalk.send(smalltalk.send((smalltalk.SystemAnnouncer || SystemAnnouncer),"_current",[]),"_announce_",[$2]);
|
19
|
+
return self},
|
13
20
|
args: ["aMethod"],
|
14
|
-
source: "addCompiledMethod: aMethod\x0a\x09<smalltalk.addMethod(aMethod.selector._asSelector(), aMethod, self)
|
15
|
-
messageSends: [],
|
16
|
-
referencedClasses: []
|
21
|
+
source: "addCompiledMethod: aMethod\x0a\x09<smalltalk.addMethod(aMethod.selector._asSelector(), aMethod, self)>.\x0a \x0a SystemAnnouncer current\x0a \x09\x09announce: (MethodAdded new\x0a \x09theClass: self;\x0a method: aMethod;\x0a yourself)",
|
22
|
+
messageSends: ["announce:", "theClass:", "new", "method:", "yourself", "current"],
|
23
|
+
referencedClasses: ["MethodAdded", "SystemAnnouncer"]
|
17
24
|
}),
|
18
25
|
smalltalk.Behavior);
|
19
26
|
|
@@ -24,14 +31,20 @@ selector: "allInstanceVariableNames",
|
|
24
31
|
category: 'accessing',
|
25
32
|
fn: function (){
|
26
33
|
var self=this;
|
27
|
-
var
|
28
|
-
|
29
|
-
|
34
|
+
var $1;
|
35
|
+
var result;
|
36
|
+
result=smalltalk.send(smalltalk.send(self,"_instanceVariableNames",[]),"_copy",[]);
|
37
|
+
$1=smalltalk.send(self,"_superclass",[]);
|
38
|
+
if(($receiver = $1) == nil || $receiver == undefined){
|
39
|
+
$1;
|
40
|
+
} else {
|
41
|
+
smalltalk.send(result,"_addAll_",[smalltalk.send(smalltalk.send(self,"_superclass",[]),"_allInstanceVariableNames",[])]);
|
42
|
+
};
|
30
43
|
return result;
|
31
|
-
|
44
|
+
},
|
32
45
|
args: [],
|
33
46
|
source: "allInstanceVariableNames\x0a\x09| result |\x0a\x09result := self instanceVariableNames copy.\x0a\x09self superclass ifNotNil: [\x0a\x09 result addAll: self superclass allInstanceVariableNames].\x0a\x09^result",
|
34
|
-
messageSends: ["copy", "instanceVariableNames", "ifNotNil:", "
|
47
|
+
messageSends: ["copy", "instanceVariableNames", "ifNotNil:", "addAll:", "allInstanceVariableNames", "superclass"],
|
35
48
|
referencedClasses: []
|
36
49
|
}),
|
37
50
|
smalltalk.Behavior);
|
@@ -43,11 +56,13 @@ selector: "allSubclasses",
|
|
43
56
|
category: 'accessing',
|
44
57
|
fn: function (){
|
45
58
|
var self=this;
|
46
|
-
var result
|
47
|
-
|
48
|
-
smalltalk.send(smalltalk.send(self,
|
59
|
+
var result;
|
60
|
+
result=smalltalk.send(self,"_subclasses",[]);
|
61
|
+
smalltalk.send(smalltalk.send(self,"_subclasses",[]),"_do_",[(function(each){
|
62
|
+
return smalltalk.send(result,"_addAll_",[smalltalk.send(each,"_allSubclasses",[])]);
|
63
|
+
})]);
|
49
64
|
return result;
|
50
|
-
|
65
|
+
},
|
51
66
|
args: [],
|
52
67
|
source: "allSubclasses\x0a\x09| result |\x0a\x09result := self subclasses.\x0a\x09self subclasses do: [:each |\x0a\x09 result addAll: each allSubclasses].\x0a\x09^result",
|
53
68
|
messageSends: ["subclasses", "do:", "addAll:", "allSubclasses"],
|
@@ -55,6 +70,33 @@ referencedClasses: []
|
|
55
70
|
}),
|
56
71
|
smalltalk.Behavior);
|
57
72
|
|
73
|
+
smalltalk.addMethod(
|
74
|
+
"_allSuperclasses",
|
75
|
+
smalltalk.method({
|
76
|
+
selector: "allSuperclasses",
|
77
|
+
category: 'accessing',
|
78
|
+
fn: function (){
|
79
|
+
var self=this;
|
80
|
+
var $1,$3,$4,$2;
|
81
|
+
$1=smalltalk.send(self,"_superclass",[]);
|
82
|
+
if(($receiver = $1) == nil || $receiver == undefined){
|
83
|
+
return [];
|
84
|
+
} else {
|
85
|
+
$1;
|
86
|
+
};
|
87
|
+
$3=smalltalk.send((smalltalk.OrderedCollection || OrderedCollection),"_with_",[smalltalk.send(self,"_superclass",[])]);
|
88
|
+
smalltalk.send($3,"_addAll_",[smalltalk.send(smalltalk.send(self,"_superclass",[]),"_allSuperclasses",[])]);
|
89
|
+
$4=smalltalk.send($3,"_yourself",[]);
|
90
|
+
$2=$4;
|
91
|
+
return $2;
|
92
|
+
},
|
93
|
+
args: [],
|
94
|
+
source: "allSuperclasses\x0a\x09\x0a self superclass ifNil: [ ^ #() ].\x0a \x0a\x09^ (OrderedCollection with: self superclass) \x0a \x09addAll: self superclass allSuperclasses;\x0a yourself",
|
95
|
+
messageSends: ["ifNil:", "superclass", "addAll:", "allSuperclasses", "with:", "yourself"],
|
96
|
+
referencedClasses: ["OrderedCollection"]
|
97
|
+
}),
|
98
|
+
smalltalk.Behavior);
|
99
|
+
|
58
100
|
smalltalk.addMethod(
|
59
101
|
"_basicNew",
|
60
102
|
smalltalk.method({
|
@@ -63,7 +105,8 @@ category: 'instance creation',
|
|
63
105
|
fn: function (){
|
64
106
|
var self=this;
|
65
107
|
return new self.fn();
|
66
|
-
|
108
|
+
;
|
109
|
+
return self},
|
67
110
|
args: [],
|
68
111
|
source: "basicNew\x0a\x09<return new self.fn()>",
|
69
112
|
messageSends: [],
|
@@ -78,11 +121,17 @@ selector: "canUnderstand:",
|
|
78
121
|
category: 'testing',
|
79
122
|
fn: function (aSelector){
|
80
123
|
var self=this;
|
81
|
-
|
82
|
-
|
124
|
+
var $1;
|
125
|
+
$1=smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self,"_methodDictionary",[]),"_keys",[]),"_includes_",[smalltalk.send(aSelector,"_asString",[])]),"_or_",[(function(){
|
126
|
+
return smalltalk.send(smalltalk.send(smalltalk.send(self,"_superclass",[]),"_notNil",[]),"_and_",[(function(){
|
127
|
+
return smalltalk.send(smalltalk.send(self,"_superclass",[]),"_canUnderstand_",[aSelector]);
|
128
|
+
})]);
|
129
|
+
})]);
|
130
|
+
return $1;
|
131
|
+
},
|
83
132
|
args: ["aSelector"],
|
84
133
|
source: "canUnderstand: aSelector\x0a\x09^(self methodDictionary keys includes: aSelector asString) or: [\x0a\x09\x09self superclass notNil and: [self superclass canUnderstand: aSelector]]",
|
85
|
-
messageSends: ["or:", "
|
134
|
+
messageSends: ["or:", "and:", "canUnderstand:", "superclass", "notNil", "includes:", "asString", "keys", "methodDictionary"],
|
86
135
|
referencedClasses: []
|
87
136
|
}),
|
88
137
|
smalltalk.Behavior);
|
@@ -94,8 +143,15 @@ selector: "comment",
|
|
94
143
|
category: 'accessing',
|
95
144
|
fn: function (){
|
96
145
|
var self=this;
|
97
|
-
|
98
|
-
|
146
|
+
var $2,$1;
|
147
|
+
$2=smalltalk.send(self,"_basicAt_",["comment"]);
|
148
|
+
if(($receiver = $2) == nil || $receiver == undefined){
|
149
|
+
$1="";
|
150
|
+
} else {
|
151
|
+
$1=$2;
|
152
|
+
};
|
153
|
+
return $1;
|
154
|
+
},
|
99
155
|
args: [],
|
100
156
|
source: "comment\x0a ^(self basicAt: 'comment') ifNil: ['']",
|
101
157
|
messageSends: ["ifNil:", "basicAt:"],
|
@@ -110,12 +166,17 @@ selector: "comment:",
|
|
110
166
|
category: 'accessing',
|
111
167
|
fn: function (aString){
|
112
168
|
var self=this;
|
113
|
-
|
114
|
-
|
169
|
+
var $1,$2;
|
170
|
+
smalltalk.send(self,"_basicAt_put_",["comment",aString]);
|
171
|
+
$1=smalltalk.send((smalltalk.ClassCommentChanged || ClassCommentChanged),"_new",[]);
|
172
|
+
smalltalk.send($1,"_theClass_",[self]);
|
173
|
+
$2=smalltalk.send($1,"_yourself",[]);
|
174
|
+
smalltalk.send(smalltalk.send((smalltalk.SystemAnnouncer || SystemAnnouncer),"_current",[]),"_announce_",[$2]);
|
175
|
+
return self},
|
115
176
|
args: ["aString"],
|
116
|
-
source: "comment: aString\x0a self basicAt: 'comment' put: aString",
|
117
|
-
messageSends: ["basicAt:put:"],
|
118
|
-
referencedClasses: []
|
177
|
+
source: "comment: aString\x0a self basicAt: 'comment' put: aString.\x0a SystemAnnouncer current\x0a \x09announce: (ClassCommentChanged new\x0a \x09theClass: self;\x0a yourself)",
|
178
|
+
messageSends: ["basicAt:put:", "announce:", "theClass:", "new", "yourself", "current"],
|
179
|
+
referencedClasses: ["ClassCommentChanged", "SystemAnnouncer"]
|
119
180
|
}),
|
120
181
|
smalltalk.Behavior);
|
121
182
|
|
@@ -126,11 +187,16 @@ selector: "commentStamp",
|
|
126
187
|
category: 'accessing',
|
127
188
|
fn: function (){
|
128
189
|
var self=this;
|
129
|
-
|
130
|
-
|
190
|
+
var $2,$3,$1;
|
191
|
+
$2=smalltalk.send((smalltalk.ClassCommentReader || ClassCommentReader),"_new",[]);
|
192
|
+
smalltalk.send($2,"_class_",[self]);
|
193
|
+
$3=smalltalk.send($2,"_yourself",[]);
|
194
|
+
$1=$3;
|
195
|
+
return $1;
|
196
|
+
},
|
131
197
|
args: [],
|
132
198
|
source: "commentStamp\x0a ^ClassCommentReader new\x0a\x09class: self;\x0a\x09yourself",
|
133
|
-
messageSends: ["class:", "
|
199
|
+
messageSends: ["class:", "new", "yourself"],
|
134
200
|
referencedClasses: ["ClassCommentReader"]
|
135
201
|
}),
|
136
202
|
smalltalk.Behavior);
|
@@ -140,10 +206,12 @@ smalltalk.addMethod(
|
|
140
206
|
smalltalk.method({
|
141
207
|
selector: "commentStamp:prior:",
|
142
208
|
category: 'accessing',
|
143
|
-
fn: function (aStamp,
|
209
|
+
fn: function (aStamp,prior){
|
144
210
|
var self=this;
|
145
|
-
|
146
|
-
|
211
|
+
var $1;
|
212
|
+
$1=smalltalk.send(self,"_commentStamp",[]);
|
213
|
+
return $1;
|
214
|
+
},
|
147
215
|
args: ["aStamp", "prior"],
|
148
216
|
source: "commentStamp: aStamp prior: prior\x0a ^self commentStamp",
|
149
217
|
messageSends: ["commentStamp"],
|
@@ -158,8 +226,8 @@ selector: "compile:",
|
|
158
226
|
category: 'compiling',
|
159
227
|
fn: function (aString){
|
160
228
|
var self=this;
|
161
|
-
smalltalk.send(self,
|
162
|
-
return self
|
229
|
+
smalltalk.send(self,"_compile_category_",[aString,""]);
|
230
|
+
return self},
|
163
231
|
args: ["aString"],
|
164
232
|
source: "compile: aString\x0a\x09self compile: aString category: ''",
|
165
233
|
messageSends: ["compile:category:"],
|
@@ -172,17 +240,33 @@ smalltalk.addMethod(
|
|
172
240
|
smalltalk.method({
|
173
241
|
selector: "compile:category:",
|
174
242
|
category: 'compiling',
|
175
|
-
fn: function (aString,
|
243
|
+
fn: function (aString,anotherString){
|
176
244
|
var self=this;
|
177
|
-
|
178
|
-
return self
|
245
|
+
smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler),"_new",[]),"_install_forClass_category_",[aString,self,anotherString]);
|
246
|
+
return self},
|
179
247
|
args: ["aString", "anotherString"],
|
180
|
-
source: "compile: aString category: anotherString\x0a\x09Compiler new\x0a\x09\x09install: aString forClass: self category: anotherString
|
181
|
-
messageSends: ["install:forClass:category:", "
|
248
|
+
source: "compile: aString category: anotherString\x0a\x09Compiler new\x0a\x09\x09install: aString \x0a forClass: self \x0a category: anotherString",
|
249
|
+
messageSends: ["install:forClass:category:", "new"],
|
182
250
|
referencedClasses: ["Compiler"]
|
183
251
|
}),
|
184
252
|
smalltalk.Behavior);
|
185
253
|
|
254
|
+
smalltalk.addMethod(
|
255
|
+
"_definition",
|
256
|
+
smalltalk.method({
|
257
|
+
selector: "definition",
|
258
|
+
category: 'accessing',
|
259
|
+
fn: function (){
|
260
|
+
var self=this;
|
261
|
+
return "";
|
262
|
+
},
|
263
|
+
args: [],
|
264
|
+
source: "definition\x0a\x09^ ''",
|
265
|
+
messageSends: [],
|
266
|
+
referencedClasses: []
|
267
|
+
}),
|
268
|
+
smalltalk.Behavior);
|
269
|
+
|
186
270
|
smalltalk.addMethod(
|
187
271
|
"_inheritsFrom_",
|
188
272
|
smalltalk.method({
|
@@ -190,8 +274,10 @@ selector: "inheritsFrom:",
|
|
190
274
|
category: 'testing',
|
191
275
|
fn: function (aClass){
|
192
276
|
var self=this;
|
193
|
-
|
194
|
-
|
277
|
+
var $1;
|
278
|
+
$1=smalltalk.send(smalltalk.send(aClass,"_allSubclasses",[]),"_includes_",[self]);
|
279
|
+
return $1;
|
280
|
+
},
|
195
281
|
args: ["aClass"],
|
196
282
|
source: "inheritsFrom: aClass\x0a\x09^aClass allSubclasses includes: self",
|
197
283
|
messageSends: ["includes:", "allSubclasses"],
|
@@ -207,7 +293,8 @@ category: 'accessing',
|
|
207
293
|
fn: function (){
|
208
294
|
var self=this;
|
209
295
|
return self.iVarNames;
|
210
|
-
|
296
|
+
;
|
297
|
+
return self},
|
211
298
|
args: [],
|
212
299
|
source: "instanceVariableNames\x0a\x09<return self.iVarNames>",
|
213
300
|
messageSends: [],
|
@@ -220,12 +307,13 @@ smalltalk.addMethod(
|
|
220
307
|
smalltalk.method({
|
221
308
|
selector: "methodAt:",
|
222
309
|
category: 'accessing',
|
223
|
-
fn: function (
|
310
|
+
fn: function (aSymbol){
|
224
311
|
var self=this;
|
225
|
-
return smalltalk.methods(self)[
|
226
|
-
|
227
|
-
|
228
|
-
|
312
|
+
return smalltalk.methods(self)[aSymbol._asString()];
|
313
|
+
;
|
314
|
+
return self},
|
315
|
+
args: ["aSymbol"],
|
316
|
+
source: "methodAt: aSymbol\x0a\x09<return smalltalk.methods(self)[aSymbol._asString()]>",
|
229
317
|
messageSends: [],
|
230
318
|
referencedClasses: []
|
231
319
|
}),
|
@@ -246,7 +334,8 @@ var dict = smalltalk.HashedCollection._new();
|
|
246
334
|
}
|
247
335
|
};
|
248
336
|
return dict;
|
249
|
-
|
337
|
+
;
|
338
|
+
return self},
|
250
339
|
args: [],
|
251
340
|
source: "methodDictionary\x0a\x09<var dict = smalltalk.HashedCollection._new();\x0a\x09var methods = self.fn.prototype.methods;\x0a\x09for(var i in methods) {\x0a\x09\x09if(methods[i].selector) {\x0a\x09\x09\x09dict._at_put_(methods[i].selector, methods[i]);\x0a\x09\x09}\x0a\x09};\x0a\x09return dict>",
|
252
341
|
messageSends: [],
|
@@ -254,6 +343,24 @@ referencedClasses: []
|
|
254
343
|
}),
|
255
344
|
smalltalk.Behavior);
|
256
345
|
|
346
|
+
smalltalk.addMethod(
|
347
|
+
"_methods",
|
348
|
+
smalltalk.method({
|
349
|
+
selector: "methods",
|
350
|
+
category: 'accessing',
|
351
|
+
fn: function (){
|
352
|
+
var self=this;
|
353
|
+
var $1;
|
354
|
+
$1=smalltalk.send(smalltalk.send(self,"_methodDictionary",[]),"_values",[]);
|
355
|
+
return $1;
|
356
|
+
},
|
357
|
+
args: [],
|
358
|
+
source: "methods\x0a\x09^ self methodDictionary values",
|
359
|
+
messageSends: ["values", "methodDictionary"],
|
360
|
+
referencedClasses: []
|
361
|
+
}),
|
362
|
+
smalltalk.Behavior);
|
363
|
+
|
257
364
|
smalltalk.addMethod(
|
258
365
|
"_methodsFor_",
|
259
366
|
smalltalk.method({
|
@@ -261,11 +368,16 @@ selector: "methodsFor:",
|
|
261
368
|
category: 'accessing',
|
262
369
|
fn: function (aString){
|
263
370
|
var self=this;
|
264
|
-
|
265
|
-
|
371
|
+
var $2,$3,$1;
|
372
|
+
$2=smalltalk.send((smalltalk.ClassCategoryReader || ClassCategoryReader),"_new",[]);
|
373
|
+
smalltalk.send($2,"_class_category_",[self,aString]);
|
374
|
+
$3=smalltalk.send($2,"_yourself",[]);
|
375
|
+
$1=$3;
|
376
|
+
return $1;
|
377
|
+
},
|
266
378
|
args: ["aString"],
|
267
379
|
source: "methodsFor: aString\x0a\x09^ClassCategoryReader new\x0a\x09 class: self category: aString;\x0a\x09 yourself",
|
268
|
-
messageSends: ["class:category:", "
|
380
|
+
messageSends: ["class:category:", "new", "yourself"],
|
269
381
|
referencedClasses: ["ClassCategoryReader"]
|
270
382
|
}),
|
271
383
|
smalltalk.Behavior);
|
@@ -275,10 +387,12 @@ smalltalk.addMethod(
|
|
275
387
|
smalltalk.method({
|
276
388
|
selector: "methodsFor:stamp:",
|
277
389
|
category: 'accessing',
|
278
|
-
fn: function (aString,
|
390
|
+
fn: function (aString,aStamp){
|
279
391
|
var self=this;
|
280
|
-
|
281
|
-
|
392
|
+
var $1;
|
393
|
+
$1=smalltalk.send(self,"_methodsFor_",[aString]);
|
394
|
+
return $1;
|
395
|
+
},
|
282
396
|
args: ["aString", "aStamp"],
|
283
397
|
source: "methodsFor: aString stamp: aStamp\x0a\x09\x22Added for compatibility, right now ignores stamp.\x22\x0a\x09^self methodsFor: aString",
|
284
398
|
messageSends: ["methodsFor:"],
|
@@ -286,6 +400,26 @@ referencedClasses: []
|
|
286
400
|
}),
|
287
401
|
smalltalk.Behavior);
|
288
402
|
|
403
|
+
smalltalk.addMethod(
|
404
|
+
"_methodsInProtocol_",
|
405
|
+
smalltalk.method({
|
406
|
+
selector: "methodsInProtocol:",
|
407
|
+
category: 'accessing',
|
408
|
+
fn: function (aString){
|
409
|
+
var self=this;
|
410
|
+
var $1;
|
411
|
+
$1=smalltalk.send(smalltalk.send(smalltalk.send(self,"_methodDictionary",[]),"_values",[]),"_select_",[(function(each){
|
412
|
+
return smalltalk.send(smalltalk.send(each,"_protocol",[]),"__eq",[aString]);
|
413
|
+
})]);
|
414
|
+
return $1;
|
415
|
+
},
|
416
|
+
args: ["aString"],
|
417
|
+
source: "methodsInProtocol: aString\x0a\x09^ self methodDictionary values select: [ :each | each protocol = aString ]",
|
418
|
+
messageSends: ["select:", "=", "protocol", "values", "methodDictionary"],
|
419
|
+
referencedClasses: []
|
420
|
+
}),
|
421
|
+
smalltalk.Behavior);
|
422
|
+
|
289
423
|
smalltalk.addMethod(
|
290
424
|
"_name",
|
291
425
|
smalltalk.method({
|
@@ -294,7 +428,8 @@ category: 'accessing',
|
|
294
428
|
fn: function (){
|
295
429
|
var self=this;
|
296
430
|
return self.className || nil;
|
297
|
-
|
431
|
+
;
|
432
|
+
return self},
|
298
433
|
args: [],
|
299
434
|
source: "name\x0a\x09<return self.className || nil>",
|
300
435
|
messageSends: [],
|
@@ -309,8 +444,10 @@ selector: "new",
|
|
309
444
|
category: 'instance creation',
|
310
445
|
fn: function (){
|
311
446
|
var self=this;
|
312
|
-
|
313
|
-
|
447
|
+
var $1;
|
448
|
+
$1=smalltalk.send(smalltalk.send(self,"_basicNew",[]),"_initialize",[]);
|
449
|
+
return $1;
|
450
|
+
},
|
314
451
|
args: [],
|
315
452
|
source: "new\x0a\x09^self basicNew initialize",
|
316
453
|
messageSends: ["initialize", "basicNew"],
|
@@ -325,14 +462,21 @@ selector: "protocols",
|
|
325
462
|
category: 'accessing',
|
326
463
|
fn: function (){
|
327
464
|
var self=this;
|
328
|
-
var
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
465
|
+
var $1,$2;
|
466
|
+
var protocols;
|
467
|
+
protocols=smalltalk.send((smalltalk.Array || Array),"_new",[]);
|
468
|
+
smalltalk.send(smalltalk.send(self,"_methodDictionary",[]),"_do_",[(function(each){
|
469
|
+
$1=smalltalk.send(protocols,"_includes_",[smalltalk.send(each,"_category",[])]);
|
470
|
+
if(! smalltalk.assert($1)){
|
471
|
+
return smalltalk.send(protocols,"_add_",[smalltalk.send(each,"_category",[])]);
|
472
|
+
};
|
473
|
+
})]);
|
474
|
+
$2=smalltalk.send(protocols,"_sort",[]);
|
475
|
+
return $2;
|
476
|
+
},
|
333
477
|
args: [],
|
334
478
|
source: "protocols\x0a | protocols |\x0a protocols := Array new.\x0a self methodDictionary do: [:each |\x0a\x09 (protocols includes: each category) ifFalse: [\x0a\x09\x09protocols add: each category]].\x0a ^protocols sort",
|
335
|
-
messageSends: ["new", "do:", "
|
479
|
+
messageSends: ["new", "do:", "ifFalse:", "add:", "category", "includes:", "methodDictionary", "sort"],
|
336
480
|
referencedClasses: ["Array"]
|
337
481
|
}),
|
338
482
|
smalltalk.Behavior);
|
@@ -344,14 +488,20 @@ selector: "protocolsDo:",
|
|
344
488
|
category: 'accessing',
|
345
489
|
fn: function (aBlock){
|
346
490
|
var self=this;
|
347
|
-
var methodsByCategory
|
348
|
-
|
349
|
-
smalltalk.send(smalltalk.send(smalltalk.send(self,
|
350
|
-
smalltalk.send(smalltalk.send(
|
351
|
-
return
|
491
|
+
var methodsByCategory;
|
492
|
+
methodsByCategory=smalltalk.send((smalltalk.HashedCollection || HashedCollection),"_new",[]);
|
493
|
+
smalltalk.send(smalltalk.send(smalltalk.send(self,"_methodDictionary",[]),"_values",[]),"_do_",[(function(m){
|
494
|
+
return smalltalk.send(smalltalk.send(methodsByCategory,"_at_ifAbsentPut_",[smalltalk.send(m,"_category",[]),(function(){
|
495
|
+
return smalltalk.send((smalltalk.Array || Array),"_new",[]);
|
496
|
+
})]),"_add_",[m]);
|
497
|
+
})]);
|
498
|
+
smalltalk.send(smalltalk.send(self,"_protocols",[]),"_do_",[(function(category){
|
499
|
+
return smalltalk.send(aBlock,"_value_value_",[category,smalltalk.send(methodsByCategory,"_at_",[category])]);
|
500
|
+
})]);
|
501
|
+
return self},
|
352
502
|
args: ["aBlock"],
|
353
503
|
source: "protocolsDo: aBlock\x0a\x09\x22Execute aBlock for each method category with\x0a\x09its collection of methods in the sort order of category name.\x22\x0a\x0a\x09| methodsByCategory |\x0a\x09methodsByCategory := HashedCollection new.\x0a\x09self methodDictionary values do: [:m |\x0a\x09\x09(methodsByCategory at: m category ifAbsentPut: [Array new])\x0a \x09\x09\x09add: m]. \x0a\x09self protocols do: [:category |\x0a\x09\x09aBlock value: category value: (methodsByCategory at: category)]",
|
354
|
-
messageSends: ["new", "do:", "
|
504
|
+
messageSends: ["new", "do:", "add:", "at:ifAbsentPut:", "category", "values", "methodDictionary", "value:value:", "at:", "protocols"],
|
355
505
|
referencedClasses: ["HashedCollection", "Array"]
|
356
506
|
}),
|
357
507
|
smalltalk.Behavior);
|
@@ -364,7 +514,8 @@ category: 'accessing',
|
|
364
514
|
fn: function (){
|
365
515
|
var self=this;
|
366
516
|
return self.fn.prototype;
|
367
|
-
|
517
|
+
;
|
518
|
+
return self},
|
368
519
|
args: [],
|
369
520
|
source: "prototype\x0a\x09<return self.fn.prototype>",
|
370
521
|
messageSends: [],
|
@@ -379,13 +530,38 @@ selector: "removeCompiledMethod:",
|
|
379
530
|
category: 'compiling',
|
380
531
|
fn: function (aMethod){
|
381
532
|
var self=this;
|
533
|
+
var $1,$2;
|
382
534
|
delete self.fn.prototype[aMethod.selector._asSelector()];
|
383
535
|
delete self.fn.prototype.methods[aMethod.selector];
|
384
536
|
smalltalk.init(self);;
|
385
|
-
|
537
|
+
;
|
538
|
+
$1=smalltalk.send((smalltalk.MethodRemoved || MethodRemoved),"_new",[]);
|
539
|
+
smalltalk.send($1,"_theClass_",[self]);
|
540
|
+
smalltalk.send($1,"_method_",[aMethod]);
|
541
|
+
$2=smalltalk.send($1,"_yourself",[]);
|
542
|
+
smalltalk.send(smalltalk.send((smalltalk.SystemAnnouncer || SystemAnnouncer),"_current",[]),"_announce_",[$2]);
|
543
|
+
return self},
|
386
544
|
args: ["aMethod"],
|
387
|
-
source: "removeCompiledMethod: aMethod\x0a\x09<delete self.fn.prototype[aMethod.selector._asSelector()];\x0a\x09delete self.fn.prototype.methods[aMethod.selector];\x0a\x09smalltalk.init(self)
|
388
|
-
messageSends: [],
|
545
|
+
source: "removeCompiledMethod: aMethod\x0a\x09<delete self.fn.prototype[aMethod.selector._asSelector()];\x0a\x09delete self.fn.prototype.methods[aMethod.selector];\x0a\x09smalltalk.init(self);>.\x0a \x0a SystemAnnouncer current\x0a \x09\x09announce: (MethodRemoved new\x0a \x09theClass: self;\x0a method: aMethod;\x0a yourself)",
|
546
|
+
messageSends: ["announce:", "theClass:", "new", "method:", "yourself", "current"],
|
547
|
+
referencedClasses: ["MethodRemoved", "SystemAnnouncer"]
|
548
|
+
}),
|
549
|
+
smalltalk.Behavior);
|
550
|
+
|
551
|
+
smalltalk.addMethod(
|
552
|
+
"_selectors",
|
553
|
+
smalltalk.method({
|
554
|
+
selector: "selectors",
|
555
|
+
category: 'accessing',
|
556
|
+
fn: function (){
|
557
|
+
var self=this;
|
558
|
+
var $1;
|
559
|
+
$1=smalltalk.send(smalltalk.send(self,"_methodDictionary",[]),"_keys",[]);
|
560
|
+
return $1;
|
561
|
+
},
|
562
|
+
args: [],
|
563
|
+
source: "selectors\x0a\x09^ self methodDictionary keys",
|
564
|
+
messageSends: ["keys", "methodDictionary"],
|
389
565
|
referencedClasses: []
|
390
566
|
}),
|
391
567
|
smalltalk.Behavior);
|
@@ -398,7 +574,8 @@ category: 'accessing',
|
|
398
574
|
fn: function (){
|
399
575
|
var self=this;
|
400
576
|
return smalltalk.subclasses(self);
|
401
|
-
|
577
|
+
;
|
578
|
+
return self},
|
402
579
|
args: [],
|
403
580
|
source: "subclasses\x0a\x09<return smalltalk.subclasses(self)>",
|
404
581
|
messageSends: [],
|
@@ -414,7 +591,8 @@ category: 'accessing',
|
|
414
591
|
fn: function (){
|
415
592
|
var self=this;
|
416
593
|
return self.superclass || nil;
|
417
|
-
|
594
|
+
;
|
595
|
+
return self},
|
418
596
|
args: [],
|
419
597
|
source: "superclass\x0a\x09<return self.superclass || nil>",
|
420
598
|
messageSends: [],
|
@@ -422,6 +600,40 @@ referencedClasses: []
|
|
422
600
|
}),
|
423
601
|
smalltalk.Behavior);
|
424
602
|
|
603
|
+
smalltalk.addMethod(
|
604
|
+
"_theMetaClass",
|
605
|
+
smalltalk.method({
|
606
|
+
selector: "theMetaClass",
|
607
|
+
category: 'accessing',
|
608
|
+
fn: function (){
|
609
|
+
var self=this;
|
610
|
+
var $1;
|
611
|
+
$1=smalltalk.send(self,"_class",[]);
|
612
|
+
return $1;
|
613
|
+
},
|
614
|
+
args: [],
|
615
|
+
source: "theMetaClass\x0a\x09^ self class",
|
616
|
+
messageSends: ["class"],
|
617
|
+
referencedClasses: []
|
618
|
+
}),
|
619
|
+
smalltalk.Behavior);
|
620
|
+
|
621
|
+
smalltalk.addMethod(
|
622
|
+
"_theNonMetaClass",
|
623
|
+
smalltalk.method({
|
624
|
+
selector: "theNonMetaClass",
|
625
|
+
category: 'accessing',
|
626
|
+
fn: function (){
|
627
|
+
var self=this;
|
628
|
+
return self;
|
629
|
+
},
|
630
|
+
args: [],
|
631
|
+
source: "theNonMetaClass\x0a\x09^ self",
|
632
|
+
messageSends: [],
|
633
|
+
referencedClasses: []
|
634
|
+
}),
|
635
|
+
smalltalk.Behavior);
|
636
|
+
|
425
637
|
smalltalk.addMethod(
|
426
638
|
"_withAllSubclasses",
|
427
639
|
smalltalk.method({
|
@@ -429,11 +641,16 @@ selector: "withAllSubclasses",
|
|
429
641
|
category: 'accessing',
|
430
642
|
fn: function (){
|
431
643
|
var self=this;
|
432
|
-
|
433
|
-
|
644
|
+
var $2,$3,$1;
|
645
|
+
$2=smalltalk.send((smalltalk.Array || Array),"_with_",[self]);
|
646
|
+
smalltalk.send($2,"_addAll_",[smalltalk.send(self,"_allSubclasses",[])]);
|
647
|
+
$3=smalltalk.send($2,"_yourself",[]);
|
648
|
+
$1=$3;
|
649
|
+
return $1;
|
650
|
+
},
|
434
651
|
args: [],
|
435
652
|
source: "withAllSubclasses\x0a\x09^(Array with: self) addAll: self allSubclasses; yourself",
|
436
|
-
messageSends: ["addAll:", "allSubclasses", "
|
653
|
+
messageSends: ["addAll:", "allSubclasses", "with:", "yourself"],
|
437
654
|
referencedClasses: ["Array"]
|
438
655
|
}),
|
439
656
|
smalltalk.Behavior);
|
@@ -442,6 +659,24 @@ smalltalk.Behavior);
|
|
442
659
|
|
443
660
|
smalltalk.addClass('Class', smalltalk.Behavior, [], 'Kernel-Classes');
|
444
661
|
smalltalk.Class.comment="Class is __the__ class object. \x0a\x0aInstances are the classes of the system.\x0aClass creation is done throught a `ClassBuilder`"
|
662
|
+
smalltalk.addMethod(
|
663
|
+
"_asJavascript",
|
664
|
+
smalltalk.method({
|
665
|
+
selector: "asJavascript",
|
666
|
+
category: 'converting',
|
667
|
+
fn: function (){
|
668
|
+
var self=this;
|
669
|
+
var $1;
|
670
|
+
$1=smalltalk.send("smalltalk.","__comma",[smalltalk.send(self,"_name",[])]);
|
671
|
+
return $1;
|
672
|
+
},
|
673
|
+
args: [],
|
674
|
+
source: "asJavascript\x0a\x09^ 'smalltalk.', self name",
|
675
|
+
messageSends: [",", "name"],
|
676
|
+
referencedClasses: []
|
677
|
+
}),
|
678
|
+
smalltalk.Class);
|
679
|
+
|
445
680
|
smalltalk.addMethod(
|
446
681
|
"_category",
|
447
682
|
smalltalk.method({
|
@@ -449,15 +684,57 @@ selector: "category",
|
|
449
684
|
category: 'accessing',
|
450
685
|
fn: function (){
|
451
686
|
var self=this;
|
452
|
-
|
453
|
-
|
687
|
+
var $2,$1;
|
688
|
+
$2=smalltalk.send(self,"_package",[]);
|
689
|
+
if(($receiver = $2) == nil || $receiver == undefined){
|
690
|
+
$1="Unclassified";
|
691
|
+
} else {
|
692
|
+
$1=smalltalk.send(smalltalk.send(self,"_package",[]),"_name",[]);
|
693
|
+
};
|
694
|
+
return $1;
|
695
|
+
},
|
454
696
|
args: [],
|
455
697
|
source: "category\x0a\x09^self package ifNil: ['Unclassified'] ifNotNil: [self package name]",
|
456
|
-
messageSends: ["ifNil:ifNotNil:", "
|
698
|
+
messageSends: ["ifNil:ifNotNil:", "name", "package"],
|
457
699
|
referencedClasses: []
|
458
700
|
}),
|
459
701
|
smalltalk.Class);
|
460
702
|
|
703
|
+
smalltalk.addMethod(
|
704
|
+
"_definition",
|
705
|
+
smalltalk.method({
|
706
|
+
selector: "definition",
|
707
|
+
category: 'accessing',
|
708
|
+
fn: function (){
|
709
|
+
var self=this;
|
710
|
+
var $2,$3,$1;
|
711
|
+
$1=smalltalk.send((smalltalk.String || String),"_streamContents_",[(function(stream){
|
712
|
+
smalltalk.send(stream,"_nextPutAll_",[smalltalk.send(smalltalk.send(self,"_superclass",[]),"_asString",[])]);
|
713
|
+
smalltalk.send(stream,"_nextPutAll_",[" subclass: #"]);
|
714
|
+
smalltalk.send(stream,"_nextPutAll_",[smalltalk.send(self,"_name",[])]);
|
715
|
+
smalltalk.send(stream,"_nextPutAll_",[smalltalk.send(smalltalk.send((smalltalk.String || String),"_lf",[]),"__comma",[smalltalk.send((smalltalk.String || String),"_tab",[])])]);
|
716
|
+
$2=smalltalk.send(stream,"_nextPutAll_",["instanceVariableNames: '"]);
|
717
|
+
$2;
|
718
|
+
smalltalk.send(smalltalk.send(self,"_instanceVariableNames",[]),"_do_separatedBy_",[(function(each){
|
719
|
+
return smalltalk.send(stream,"_nextPutAll_",[each]);
|
720
|
+
}),(function(){
|
721
|
+
return smalltalk.send(stream,"_nextPutAll_",[" "]);
|
722
|
+
})]);
|
723
|
+
smalltalk.send(stream,"_nextPutAll_",[smalltalk.send(smalltalk.send("'","__comma",[smalltalk.send((smalltalk.String || String),"_lf",[])]),"__comma",[smalltalk.send((smalltalk.String || String),"_tab",[])])]);
|
724
|
+
smalltalk.send(stream,"_nextPutAll_",["package: '"]);
|
725
|
+
smalltalk.send(stream,"_nextPutAll_",[smalltalk.send(self,"_category",[])]);
|
726
|
+
$3=smalltalk.send(stream,"_nextPutAll_",["'"]);
|
727
|
+
return $3;
|
728
|
+
})]);
|
729
|
+
return $1;
|
730
|
+
},
|
731
|
+
args: [],
|
732
|
+
source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream \x0a\x09 \x09nextPutAll: self superclass asString;\x0a\x09 \x09nextPutAll: ' subclass: #';\x0a\x09 \x09nextPutAll: self name;\x0a\x09 \x09nextPutAll: String lf, String tab;\x0a\x09 \x09nextPutAll: 'instanceVariableNames: '''.\x0a\x09\x09self instanceVariableNames \x0a \x09do: [ :each | stream nextPutAll: each ] \x0a\x09 \x09separatedBy: [ stream nextPutAll: ' ' ].\x0a\x09\x09stream\x0a\x09 \x09nextPutAll: '''', String lf, String tab;\x0a\x09 \x09nextPutAll: 'package: ''';\x0a\x09 \x09nextPutAll: self category;\x0a\x09 \x09nextPutAll: '''' ]",
|
733
|
+
messageSends: ["streamContents:", "nextPutAll:", "asString", "superclass", "name", ",", "tab", "lf", "do:separatedBy:", "instanceVariableNames", "category"],
|
734
|
+
referencedClasses: ["String"]
|
735
|
+
}),
|
736
|
+
smalltalk.Class);
|
737
|
+
|
461
738
|
smalltalk.addMethod(
|
462
739
|
"_isClass",
|
463
740
|
smalltalk.method({
|
@@ -466,7 +743,7 @@ category: 'testing',
|
|
466
743
|
fn: function (){
|
467
744
|
var self=this;
|
468
745
|
return true;
|
469
|
-
|
746
|
+
},
|
470
747
|
args: [],
|
471
748
|
source: "isClass\x0a\x09^true",
|
472
749
|
messageSends: [],
|
@@ -482,7 +759,8 @@ category: 'accessing',
|
|
482
759
|
fn: function (){
|
483
760
|
var self=this;
|
484
761
|
return self.pkg;
|
485
|
-
|
762
|
+
;
|
763
|
+
return self},
|
486
764
|
args: [],
|
487
765
|
source: "package\x0a\x09<return self.pkg>",
|
488
766
|
messageSends: [],
|
@@ -498,7 +776,8 @@ category: 'accessing',
|
|
498
776
|
fn: function (aPackage){
|
499
777
|
var self=this;
|
500
778
|
self.pkg = aPackage;
|
501
|
-
|
779
|
+
;
|
780
|
+
return self},
|
502
781
|
args: ["aPackage"],
|
503
782
|
source: "package: aPackage\x0a\x09<self.pkg = aPackage>",
|
504
783
|
messageSends: [],
|
@@ -513,8 +792,10 @@ selector: "printString",
|
|
513
792
|
category: 'printing',
|
514
793
|
fn: function (){
|
515
794
|
var self=this;
|
516
|
-
|
517
|
-
|
795
|
+
var $1;
|
796
|
+
$1=smalltalk.send(self,"_name",[]);
|
797
|
+
return $1;
|
798
|
+
},
|
518
799
|
args: [],
|
519
800
|
source: "printString\x0a\x09^self name",
|
520
801
|
messageSends: ["name"],
|
@@ -529,16 +810,12 @@ selector: "rename:",
|
|
529
810
|
category: 'accessing',
|
530
811
|
fn: function (aString){
|
531
812
|
var self=this;
|
532
|
-
|
533
|
-
|
534
|
-
delete smalltalk[self.className];
|
535
|
-
self.className = aString;
|
536
|
-
;
|
537
|
-
return self;},
|
813
|
+
smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder),"_new",[]),"_renameClass_to_",[self,aString]);
|
814
|
+
return self},
|
538
815
|
args: ["aString"],
|
539
|
-
source: "rename: aString\x0a\
|
540
|
-
messageSends: [],
|
541
|
-
referencedClasses: []
|
816
|
+
source: "rename: aString\x0a\x09ClassBuilder new renameClass: self to: aString",
|
817
|
+
messageSends: ["renameClass:to:", "new"],
|
818
|
+
referencedClasses: ["ClassBuilder"]
|
542
819
|
}),
|
543
820
|
smalltalk.Class);
|
544
821
|
|
@@ -547,10 +824,12 @@ smalltalk.addMethod(
|
|
547
824
|
smalltalk.method({
|
548
825
|
selector: "subclass:instanceVariableNames:",
|
549
826
|
category: 'class creation',
|
550
|
-
fn: function (aString,
|
827
|
+
fn: function (aString,anotherString){
|
551
828
|
var self=this;
|
552
|
-
|
553
|
-
|
829
|
+
var $1;
|
830
|
+
$1=smalltalk.send(self,"_subclass_instanceVariableNames_package_",[aString,anotherString,nil]);
|
831
|
+
return $1;
|
832
|
+
},
|
554
833
|
args: ["aString", "anotherString"],
|
555
834
|
source: "subclass: aString instanceVariableNames: anotherString\x0a\x09\x22Kept for compatibility.\x22\x0a\x09^self subclass: aString instanceVariableNames: anotherString package: nil",
|
556
835
|
messageSends: ["subclass:instanceVariableNames:package:"],
|
@@ -563,11 +842,13 @@ smalltalk.addMethod(
|
|
563
842
|
smalltalk.method({
|
564
843
|
selector: "subclass:instanceVariableNames:category:",
|
565
844
|
category: 'class creation',
|
566
|
-
fn: function (aString,
|
845
|
+
fn: function (aString,aString2,aString3){
|
567
846
|
var self=this;
|
568
|
-
|
569
|
-
|
570
|
-
|
847
|
+
var $1;
|
848
|
+
smalltalk.send(self,"_deprecatedAPI",[]);
|
849
|
+
$1=smalltalk.send(self,"_subclass_instanceVariableNames_package_",[aString,aString2,aString3]);
|
850
|
+
return $1;
|
851
|
+
},
|
571
852
|
args: ["aString", "aString2", "aString3"],
|
572
853
|
source: "subclass: aString instanceVariableNames: aString2 category: aString3\x0a\x09\x22Kept for compatibility.\x22\x0a\x09self deprecatedAPI.\x0a\x09^self subclass: aString instanceVariableNames: aString2 package: aString3",
|
573
854
|
messageSends: ["deprecatedAPI", "subclass:instanceVariableNames:package:"],
|
@@ -580,10 +861,12 @@ smalltalk.addMethod(
|
|
580
861
|
smalltalk.method({
|
581
862
|
selector: "subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:",
|
582
863
|
category: 'class creation',
|
583
|
-
fn: function (aString,
|
864
|
+
fn: function (aString,aString2,classVars,pools,aString3){
|
584
865
|
var self=this;
|
585
|
-
|
586
|
-
|
866
|
+
var $1;
|
867
|
+
$1=smalltalk.send(self,"_subclass_instanceVariableNames_package_",[aString,aString2,aString3]);
|
868
|
+
return $1;
|
869
|
+
},
|
587
870
|
args: ["aString", "aString2", "classVars", "pools", "aString3"],
|
588
871
|
source: "subclass: aString instanceVariableNames: aString2 classVariableNames: classVars poolDictionaries: pools category: aString3\x0a\x09\x22Just ignore class variables and pools. Added for compatibility.\x22\x0a\x09^self subclass: aString instanceVariableNames: aString2 package: aString3",
|
589
872
|
messageSends: ["subclass:instanceVariableNames:package:"],
|
@@ -596,13 +879,15 @@ smalltalk.addMethod(
|
|
596
879
|
smalltalk.method({
|
597
880
|
selector: "subclass:instanceVariableNames:package:",
|
598
881
|
category: 'class creation',
|
599
|
-
fn: function (aString,
|
882
|
+
fn: function (aString,aString2,aString3){
|
600
883
|
var self=this;
|
601
|
-
|
602
|
-
|
884
|
+
var $1;
|
885
|
+
$1=smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder),"_new",[]),"_superclass_subclass_instanceVariableNames_package_",[self,smalltalk.send(aString,"_asString",[]),aString2,aString3]);
|
886
|
+
return $1;
|
887
|
+
},
|
603
888
|
args: ["aString", "aString2", "aString3"],
|
604
889
|
source: "subclass: aString instanceVariableNames: aString2 package: aString3\x0a\x09^ClassBuilder new\x0a\x09 superclass: self subclass: aString asString instanceVariableNames: aString2 package: aString3",
|
605
|
-
messageSends: ["superclass:subclass:instanceVariableNames:package:", "
|
890
|
+
messageSends: ["superclass:subclass:instanceVariableNames:package:", "asString", "new"],
|
606
891
|
referencedClasses: ["ClassBuilder"]
|
607
892
|
}),
|
608
893
|
smalltalk.Class);
|
@@ -611,6 +896,53 @@ smalltalk.Class);
|
|
611
896
|
|
612
897
|
smalltalk.addClass('Metaclass', smalltalk.Behavior, [], 'Kernel-Classes');
|
613
898
|
smalltalk.Metaclass.comment="Metaclass is the root of the class hierarchy.\x0a\x0aMetaclass instances are metaclasses, one for each real class. \x0aMetaclass instances have a single instance, which they hold onto, which is the class that they are the metaclass of."
|
899
|
+
smalltalk.addMethod(
|
900
|
+
"_asJavascript",
|
901
|
+
smalltalk.method({
|
902
|
+
selector: "asJavascript",
|
903
|
+
category: 'converting',
|
904
|
+
fn: function (){
|
905
|
+
var self=this;
|
906
|
+
var $1;
|
907
|
+
$1=smalltalk.send(smalltalk.send("smalltalk.","__comma",[smalltalk.send(smalltalk.send(self,"_instanceClass",[]),"_name",[])]),"__comma",[".klass"]);
|
908
|
+
return $1;
|
909
|
+
},
|
910
|
+
args: [],
|
911
|
+
source: "asJavascript\x0a\x09^ 'smalltalk.', self instanceClass name, '.klass'",
|
912
|
+
messageSends: [",", "name", "instanceClass"],
|
913
|
+
referencedClasses: []
|
914
|
+
}),
|
915
|
+
smalltalk.Metaclass);
|
916
|
+
|
917
|
+
smalltalk.addMethod(
|
918
|
+
"_definition",
|
919
|
+
smalltalk.method({
|
920
|
+
selector: "definition",
|
921
|
+
category: 'accessing',
|
922
|
+
fn: function (){
|
923
|
+
var self=this;
|
924
|
+
var $2,$1;
|
925
|
+
$1=smalltalk.send((smalltalk.String || String),"_streamContents_",[(function(stream){
|
926
|
+
smalltalk.send(stream,"_nextPutAll_",[smalltalk.send(self,"_asString",[])]);
|
927
|
+
smalltalk.send(stream,"_nextPutAll_",[" class "]);
|
928
|
+
$2=smalltalk.send(stream,"_nextPutAll_",["instanceVariableNames: '"]);
|
929
|
+
$2;
|
930
|
+
smalltalk.send(smalltalk.send(self,"_instanceVariableNames",[]),"_do_separatedBy_",[(function(each){
|
931
|
+
return smalltalk.send(stream,"_nextPutAll_",[each]);
|
932
|
+
}),(function(){
|
933
|
+
return smalltalk.send(stream,"_nextPutAll_",[" "]);
|
934
|
+
})]);
|
935
|
+
return smalltalk.send(stream,"_nextPutAll_",["'"]);
|
936
|
+
})]);
|
937
|
+
return $1;
|
938
|
+
},
|
939
|
+
args: [],
|
940
|
+
source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream \x0a\x09 \x09 \x09nextPutAll: self asString;\x0a\x09 \x09nextPutAll: ' class ';\x0a\x09 \x09nextPutAll: 'instanceVariableNames: '''.\x0a\x09\x09self instanceVariableNames\x0a\x09 \x09do: [ :each | stream nextPutAll: each ]\x0a\x09 \x09separatedBy: [ stream nextPutAll: ' ' ].\x0a\x09\x09stream nextPutAll: '''' ]",
|
941
|
+
messageSends: ["streamContents:", "nextPutAll:", "asString", "do:separatedBy:", "instanceVariableNames"],
|
942
|
+
referencedClasses: ["String"]
|
943
|
+
}),
|
944
|
+
smalltalk.Metaclass);
|
945
|
+
|
614
946
|
smalltalk.addMethod(
|
615
947
|
"_instanceClass",
|
616
948
|
smalltalk.method({
|
@@ -619,7 +951,8 @@ category: 'accessing',
|
|
619
951
|
fn: function (){
|
620
952
|
var self=this;
|
621
953
|
return self.instanceClass;
|
622
|
-
|
954
|
+
;
|
955
|
+
return self},
|
623
956
|
args: [],
|
624
957
|
source: "instanceClass\x0a\x09<return self.instanceClass>",
|
625
958
|
messageSends: [],
|
@@ -634,8 +967,8 @@ selector: "instanceVariableNames:",
|
|
634
967
|
category: 'accessing',
|
635
968
|
fn: function (aCollection){
|
636
969
|
var self=this;
|
637
|
-
smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder),
|
638
|
-
return self
|
970
|
+
smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder),"_new",[]),"_class_instanceVariableNames_",[self,aCollection]);
|
971
|
+
return self},
|
639
972
|
args: ["aCollection"],
|
640
973
|
source: "instanceVariableNames: aCollection\x0a\x09ClassBuilder new\x0a\x09 class: self instanceVariableNames: aCollection",
|
641
974
|
messageSends: ["class:instanceVariableNames:", "new"],
|
@@ -651,7 +984,7 @@ category: 'testing',
|
|
651
984
|
fn: function (){
|
652
985
|
var self=this;
|
653
986
|
return true;
|
654
|
-
|
987
|
+
},
|
655
988
|
args: [],
|
656
989
|
source: "isMetaclass\x0a\x09^true",
|
657
990
|
messageSends: [],
|
@@ -666,8 +999,10 @@ selector: "printString",
|
|
666
999
|
category: 'printing',
|
667
1000
|
fn: function (){
|
668
1001
|
var self=this;
|
669
|
-
|
670
|
-
|
1002
|
+
var $1;
|
1003
|
+
$1=smalltalk.send(smalltalk.send(smalltalk.send(self,"_instanceClass",[]),"_name",[]),"__comma",[" class"]);
|
1004
|
+
return $1;
|
1005
|
+
},
|
671
1006
|
args: [],
|
672
1007
|
source: "printString\x0a\x09^self instanceClass name, ' class'",
|
673
1008
|
messageSends: [",", "name", "instanceClass"],
|
@@ -675,6 +1010,40 @@ referencedClasses: []
|
|
675
1010
|
}),
|
676
1011
|
smalltalk.Metaclass);
|
677
1012
|
|
1013
|
+
smalltalk.addMethod(
|
1014
|
+
"_theMetaClass",
|
1015
|
+
smalltalk.method({
|
1016
|
+
selector: "theMetaClass",
|
1017
|
+
category: 'accessing',
|
1018
|
+
fn: function (){
|
1019
|
+
var self=this;
|
1020
|
+
return self;
|
1021
|
+
},
|
1022
|
+
args: [],
|
1023
|
+
source: "theMetaClass\x0a\x09^ self",
|
1024
|
+
messageSends: [],
|
1025
|
+
referencedClasses: []
|
1026
|
+
}),
|
1027
|
+
smalltalk.Metaclass);
|
1028
|
+
|
1029
|
+
smalltalk.addMethod(
|
1030
|
+
"_theNonMetaClass",
|
1031
|
+
smalltalk.method({
|
1032
|
+
selector: "theNonMetaClass",
|
1033
|
+
category: 'accessing',
|
1034
|
+
fn: function (){
|
1035
|
+
var self=this;
|
1036
|
+
var $1;
|
1037
|
+
$1=smalltalk.send(self,"_instanceClass",[]);
|
1038
|
+
return $1;
|
1039
|
+
},
|
1040
|
+
args: [],
|
1041
|
+
source: "theNonMetaClass\x0a\x09^ self instanceClass",
|
1042
|
+
messageSends: ["instanceClass"],
|
1043
|
+
referencedClasses: []
|
1044
|
+
}),
|
1045
|
+
smalltalk.Metaclass);
|
1046
|
+
|
678
1047
|
|
679
1048
|
|
680
1049
|
smalltalk.addClass('ClassBuilder', smalltalk.Object, [], 'Kernel-Classes');
|
@@ -684,11 +1053,12 @@ smalltalk.addMethod(
|
|
684
1053
|
smalltalk.method({
|
685
1054
|
selector: "addSubclassOf:named:instanceVariableNames:",
|
686
1055
|
category: 'private',
|
687
|
-
fn: function (aClass,
|
1056
|
+
fn: function (aClass,aString,aCollection){
|
688
1057
|
var self=this;
|
689
1058
|
smalltalk.addClass(aString, aClass, aCollection);
|
690
1059
|
return smalltalk[aString];
|
691
|
-
|
1060
|
+
;
|
1061
|
+
return self},
|
692
1062
|
args: ["aClass", "aString", "aCollection"],
|
693
1063
|
source: "addSubclassOf: aClass named: aString instanceVariableNames: aCollection\x0a\x09<smalltalk.addClass(aString, aClass, aCollection);\x0a\x09 return smalltalk[aString]>",
|
694
1064
|
messageSends: [],
|
@@ -701,11 +1071,12 @@ smalltalk.addMethod(
|
|
701
1071
|
smalltalk.method({
|
702
1072
|
selector: "addSubclassOf:named:instanceVariableNames:package:",
|
703
1073
|
category: 'private',
|
704
|
-
fn: function (aClass,
|
1074
|
+
fn: function (aClass,aString,aCollection,packageName){
|
705
1075
|
var self=this;
|
706
1076
|
smalltalk.addClass(aString, aClass, aCollection, packageName);
|
707
1077
|
return smalltalk[aString];
|
708
|
-
|
1078
|
+
;
|
1079
|
+
return self},
|
709
1080
|
args: ["aClass", "aString", "aCollection", "packageName"],
|
710
1081
|
source: "addSubclassOf: aClass named: aString instanceVariableNames: aCollection package: packageName\x0a\x09<smalltalk.addClass(aString, aClass, aCollection, packageName);\x0a\x09 return smalltalk[aString]>",
|
711
1082
|
messageSends: [],
|
@@ -718,16 +1089,24 @@ smalltalk.addMethod(
|
|
718
1089
|
smalltalk.method({
|
719
1090
|
selector: "class:instanceVariableNames:",
|
720
1091
|
category: 'class creation',
|
721
|
-
fn: function (aClass,
|
722
|
-
var self=this;
|
723
|
-
|
724
|
-
smalltalk.send(aClass,
|
725
|
-
smalltalk.
|
726
|
-
|
1092
|
+
fn: function (aClass,aString){
|
1093
|
+
var self=this;
|
1094
|
+
var $1,$2,$3;
|
1095
|
+
$1=smalltalk.send(aClass,"_isMetaclass",[]);
|
1096
|
+
if(! smalltalk.assert($1)){
|
1097
|
+
smalltalk.send(self,"_error_",[smalltalk.send(smalltalk.send(aClass,"_name",[]),"__comma",[" is not a metaclass"])]);
|
1098
|
+
};
|
1099
|
+
smalltalk.send(aClass,"_basicAt_put_",["iVarNames",smalltalk.send(self,"_instanceVariableNamesFor_",[aString])]);
|
1100
|
+
$2=smalltalk.send((smalltalk.ClassDefinitionChanged || ClassDefinitionChanged),"_new",[]);
|
1101
|
+
smalltalk.send($2,"_theClass_",[aClass]);
|
1102
|
+
$3=smalltalk.send($2,"_yourself",[]);
|
1103
|
+
smalltalk.send(smalltalk.send((smalltalk.SystemAnnouncer || SystemAnnouncer),"_current",[]),"_announce_",[$3]);
|
1104
|
+
smalltalk.send(self,"_setupClass_",[aClass]);
|
1105
|
+
return self},
|
727
1106
|
args: ["aClass", "aString"],
|
728
|
-
source: "class: aClass instanceVariableNames: aString\x0a\x09aClass isMetaclass ifFalse: [self error: aClass name, ' is not a metaclass'].\x0a\x09aClass basicAt: 'iVarNames' put: (self instanceVariableNamesFor: aString).\x0a\x09self setupClass: aClass",
|
729
|
-
messageSends: ["ifFalse:", "
|
730
|
-
referencedClasses: []
|
1107
|
+
source: "class: aClass instanceVariableNames: aString\x0a\x09aClass isMetaclass ifFalse: [self error: aClass name, ' is not a metaclass'].\x0a\x09aClass basicAt: 'iVarNames' put: (self instanceVariableNamesFor: aString).\x0a \x0a SystemAnnouncer current\x0a \x09announce: (ClassDefinitionChanged new\x0a \x09theClass: aClass;\x0a yourself).\x0a \x0a\x09self setupClass: aClass",
|
1108
|
+
messageSends: ["ifFalse:", "error:", ",", "name", "isMetaclass", "basicAt:put:", "instanceVariableNamesFor:", "announce:", "theClass:", "new", "yourself", "current", "setupClass:"],
|
1109
|
+
referencedClasses: ["ClassDefinitionChanged", "SystemAnnouncer"]
|
731
1110
|
}),
|
732
1111
|
smalltalk.ClassBuilder);
|
733
1112
|
|
@@ -736,19 +1115,23 @@ smalltalk.addMethod(
|
|
736
1115
|
smalltalk.method({
|
737
1116
|
selector: "copyClass:named:",
|
738
1117
|
category: 'private',
|
739
|
-
fn: function (aClass,
|
740
|
-
var self=this;
|
741
|
-
var newClass
|
742
|
-
|
743
|
-
smalltalk.send(self,
|
744
|
-
smalltalk.send(smalltalk.send(smalltalk.send(aClass,
|
745
|
-
|
746
|
-
|
1118
|
+
fn: function (aClass,aString){
|
1119
|
+
var self=this;
|
1120
|
+
var newClass;
|
1121
|
+
newClass=smalltalk.send(self,"_addSubclassOf_named_instanceVariableNames_package_",[smalltalk.send(aClass,"_superclass",[]),aString,smalltalk.send(aClass,"_instanceVariableNames",[]),smalltalk.send(smalltalk.send(aClass,"_package",[]),"_name",[])]);
|
1122
|
+
smalltalk.send(self,"_setupClass_",[newClass]);
|
1123
|
+
smalltalk.send(smalltalk.send(smalltalk.send(aClass,"_methodDictionary",[]),"_values",[]),"_do_",[(function(each){
|
1124
|
+
return smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler),"_new",[]),"_install_forClass_category_",[smalltalk.send(each,"_source",[]),newClass,smalltalk.send(each,"_category",[])]);
|
1125
|
+
})]);
|
1126
|
+
smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aClass,"_class",[]),"_methodDictionary",[]),"_values",[]),"_do_",[(function(each){
|
1127
|
+
return smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler),"_new",[]),"_install_forClass_category_",[smalltalk.send(each,"_source",[]),smalltalk.send(newClass,"_class",[]),smalltalk.send(each,"_category",[])]);
|
1128
|
+
})]);
|
1129
|
+
smalltalk.send(self,"_setupClass_",[newClass]);
|
747
1130
|
return newClass;
|
748
|
-
|
1131
|
+
},
|
749
1132
|
args: ["aClass", "aString"],
|
750
1133
|
source: "copyClass: aClass named: aString\x0a\x09| newClass |\x0a\x0a\x09newClass := self \x0a\x09\x09addSubclassOf: aClass superclass\x0a\x09\x09named: aString \x0a\x09\x09instanceVariableNames: aClass instanceVariableNames \x0a\x09\x09package: aClass package name.\x0a\x0a\x09self setupClass: newClass.\x0a\x0a\x09aClass methodDictionary values do: [:each |\x0a\x09\x09Compiler new install: each source forClass: newClass category: each category].\x0a\x0a\x09aClass class methodDictionary values do: [:each |\x0a\x09\x09Compiler new install: each source forClass: newClass class category: each category].\x0a\x0a\x09self setupClass: newClass.\x0a\x09^newClass",
|
751
|
-
messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "superclass", "instanceVariableNames", "name", "package", "setupClass:", "do:", "
|
1134
|
+
messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "superclass", "instanceVariableNames", "name", "package", "setupClass:", "do:", "install:forClass:category:", "source", "category", "new", "values", "methodDictionary", "class"],
|
752
1135
|
referencedClasses: ["Compiler"]
|
753
1136
|
}),
|
754
1137
|
smalltalk.ClassBuilder);
|
@@ -760,15 +1143,45 @@ selector: "instanceVariableNamesFor:",
|
|
760
1143
|
category: 'private',
|
761
1144
|
fn: function (aString){
|
762
1145
|
var self=this;
|
763
|
-
|
764
|
-
|
1146
|
+
var $1;
|
1147
|
+
$1=smalltalk.send(smalltalk.send(aString,"_tokenize_",[" "]),"_reject_",[(function(each){
|
1148
|
+
return smalltalk.send(each,"_isEmpty",[]);
|
1149
|
+
})]);
|
1150
|
+
return $1;
|
1151
|
+
},
|
765
1152
|
args: ["aString"],
|
766
1153
|
source: "instanceVariableNamesFor: aString\x0a\x09^(aString tokenize: ' ') reject: [:each | each isEmpty]",
|
767
|
-
messageSends: ["reject:", "
|
1154
|
+
messageSends: ["reject:", "isEmpty", "tokenize:"],
|
768
1155
|
referencedClasses: []
|
769
1156
|
}),
|
770
1157
|
smalltalk.ClassBuilder);
|
771
1158
|
|
1159
|
+
smalltalk.addMethod(
|
1160
|
+
"_renameClass_to_",
|
1161
|
+
smalltalk.method({
|
1162
|
+
selector: "renameClass:to:",
|
1163
|
+
category: 'class creation',
|
1164
|
+
fn: function (aClass,aString){
|
1165
|
+
var self=this;
|
1166
|
+
var $1,$2;
|
1167
|
+
|
1168
|
+
smalltalk[aString] = aClass;
|
1169
|
+
delete smalltalk[aClass.className];
|
1170
|
+
aClass.className = aString;
|
1171
|
+
;
|
1172
|
+
;
|
1173
|
+
$1=smalltalk.send((smalltalk.ClassRenamed || ClassRenamed),"_new",[]);
|
1174
|
+
smalltalk.send($1,"_theClass_",[aClass]);
|
1175
|
+
$2=smalltalk.send($1,"_yourself",[]);
|
1176
|
+
smalltalk.send(smalltalk.send((smalltalk.SystemAnnouncer || SystemAnnouncer),"_current",[]),"_announce_",[$2]);
|
1177
|
+
return self},
|
1178
|
+
args: ["aClass", "aString"],
|
1179
|
+
source: "renameClass: aClass to: aString\x0a\x09<\x0a\x09\x09smalltalk[aString] = aClass;\x0a\x09\x09delete smalltalk[aClass.className];\x0a\x09\x09aClass.className = aString;\x0a\x09>.\x0a \x0a SystemAnnouncer current\x0a \x09announce: (ClassRenamed new\x0a \x09theClass: aClass;\x0a yourself)\x0a \x09",
|
1180
|
+
messageSends: ["announce:", "theClass:", "new", "yourself", "current"],
|
1181
|
+
referencedClasses: ["ClassRenamed", "SystemAnnouncer"]
|
1182
|
+
}),
|
1183
|
+
smalltalk.ClassBuilder);
|
1184
|
+
|
772
1185
|
smalltalk.addMethod(
|
773
1186
|
"_setupClass_",
|
774
1187
|
smalltalk.method({
|
@@ -777,7 +1190,8 @@ category: 'private',
|
|
777
1190
|
fn: function (aClass){
|
778
1191
|
var self=this;
|
779
1192
|
smalltalk.init(aClass);;
|
780
|
-
|
1193
|
+
;
|
1194
|
+
return self},
|
781
1195
|
args: ["aClass"],
|
782
1196
|
source: "setupClass: aClass\x0a\x09<smalltalk.init(aClass);>",
|
783
1197
|
messageSends: [],
|
@@ -790,10 +1204,12 @@ smalltalk.addMethod(
|
|
790
1204
|
smalltalk.method({
|
791
1205
|
selector: "superclass:subclass:",
|
792
1206
|
category: 'class creation',
|
793
|
-
fn: function (aClass,
|
1207
|
+
fn: function (aClass,aString){
|
794
1208
|
var self=this;
|
795
|
-
|
796
|
-
|
1209
|
+
var $1;
|
1210
|
+
$1=smalltalk.send(self,"_superclass_subclass_instanceVariableNames_package_",[aClass,aString,"",nil]);
|
1211
|
+
return $1;
|
1212
|
+
},
|
797
1213
|
args: ["aClass", "aString"],
|
798
1214
|
source: "superclass: aClass subclass: aString\x0a\x09^self superclass: aClass subclass: aString instanceVariableNames: '' package: nil",
|
799
1215
|
messageSends: ["superclass:subclass:instanceVariableNames:package:"],
|
@@ -806,17 +1222,27 @@ smalltalk.addMethod(
|
|
806
1222
|
smalltalk.method({
|
807
1223
|
selector: "superclass:subclass:instanceVariableNames:package:",
|
808
1224
|
category: 'class creation',
|
809
|
-
fn: function (aClass,
|
810
|
-
var self=this;
|
811
|
-
var
|
812
|
-
|
813
|
-
|
1225
|
+
fn: function (aClass,aString,aString2,aString3){
|
1226
|
+
var self=this;
|
1227
|
+
var $1,$2,$3;
|
1228
|
+
var newClass;
|
1229
|
+
if(($receiver = aString3) == nil || $receiver == undefined){
|
1230
|
+
$1="unclassified";
|
1231
|
+
} else {
|
1232
|
+
$1=aString3;
|
1233
|
+
};
|
1234
|
+
newClass=smalltalk.send(self,"_addSubclassOf_named_instanceVariableNames_package_",[aClass,aString,smalltalk.send(self,"_instanceVariableNamesFor_",[aString2]),$1]);
|
1235
|
+
smalltalk.send(self,"_setupClass_",[newClass]);
|
1236
|
+
$2=smalltalk.send((smalltalk.ClassAdded || ClassAdded),"_new",[]);
|
1237
|
+
smalltalk.send($2,"_theClass_",[newClass]);
|
1238
|
+
$3=smalltalk.send($2,"_yourself",[]);
|
1239
|
+
smalltalk.send(smalltalk.send((smalltalk.SystemAnnouncer || SystemAnnouncer),"_current",[]),"_announce_",[$3]);
|
814
1240
|
return newClass;
|
815
|
-
|
1241
|
+
},
|
816
1242
|
args: ["aClass", "aString", "aString2", "aString3"],
|
817
|
-
source: "superclass: aClass subclass: aString instanceVariableNames: aString2 package: aString3\x0a\x09| newClass |\x0a\
|
818
|
-
messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "instanceVariableNamesFor:", "ifNil:", "setupClass:"],
|
819
|
-
referencedClasses: []
|
1243
|
+
source: "superclass: aClass subclass: aString instanceVariableNames: aString2 package: aString3\x0a\x09| newClass |\x0a\x09\x0a newClass := self addSubclassOf: aClass\x0a\x09\x09named: aString instanceVariableNames: (self instanceVariableNamesFor: aString2)\x0a\x09\x09package: (aString3 ifNil: ['unclassified']).\x0a\x09self setupClass: newClass.\x0a \x0a SystemAnnouncer current \x0a \x09announce: (ClassAdded new\x0a \x09theClass: newClass;\x0a yourself).\x0a \x0a\x09^newClass",
|
1244
|
+
messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "instanceVariableNamesFor:", "ifNil:", "setupClass:", "announce:", "theClass:", "new", "yourself", "current"],
|
1245
|
+
referencedClasses: ["ClassAdded", "SystemAnnouncer"]
|
820
1246
|
}),
|
821
1247
|
smalltalk.ClassBuilder);
|
822
1248
|
|
@@ -829,11 +1255,11 @@ smalltalk.addMethod(
|
|
829
1255
|
smalltalk.method({
|
830
1256
|
selector: "class:category:",
|
831
1257
|
category: 'accessing',
|
832
|
-
fn: function (aClass,
|
1258
|
+
fn: function (aClass,aString){
|
833
1259
|
var self=this;
|
834
|
-
|
835
|
-
|
836
|
-
return self
|
1260
|
+
self["@class"]=aClass;
|
1261
|
+
self["@category"]=aString;
|
1262
|
+
return self},
|
837
1263
|
args: ["aClass", "aString"],
|
838
1264
|
source: "class: aClass category: aString\x0a\x09class := aClass.\x0a\x09category := aString",
|
839
1265
|
messageSends: [],
|
@@ -848,8 +1274,8 @@ selector: "compileMethod:",
|
|
848
1274
|
category: 'private',
|
849
1275
|
fn: function (aString){
|
850
1276
|
var self=this;
|
851
|
-
smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler),
|
852
|
-
return self
|
1277
|
+
smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler),"_new",[]),"_install_forClass_category_",[aString,self["@class"],self["@category"]]);
|
1278
|
+
return self},
|
853
1279
|
args: ["aString"],
|
854
1280
|
source: "compileMethod: aString\x0a\x09Compiler new install: aString forClass: class category: category",
|
855
1281
|
messageSends: ["install:forClass:category:", "new"],
|
@@ -864,9 +1290,9 @@ selector: "initialize",
|
|
864
1290
|
category: 'initialization',
|
865
1291
|
fn: function (){
|
866
1292
|
var self=this;
|
867
|
-
smalltalk.send(self,
|
868
|
-
|
869
|
-
return self
|
1293
|
+
smalltalk.send(self,"_initialize",[],smalltalk.Object);
|
1294
|
+
self["@chunkParser"]=smalltalk.send((smalltalk.ChunkParser || ChunkParser),"_new",[]);
|
1295
|
+
return self},
|
870
1296
|
args: [],
|
871
1297
|
source: "initialize\x0a\x09super initialize.\x0a\x09chunkParser := ChunkParser new.",
|
872
1298
|
messageSends: ["initialize", "new"],
|
@@ -881,13 +1307,19 @@ selector: "scanFrom:",
|
|
881
1307
|
category: 'fileIn',
|
882
1308
|
fn: function (aChunkParser){
|
883
1309
|
var self=this;
|
884
|
-
var chunk
|
885
|
-
|
886
|
-
smalltalk.send(
|
887
|
-
|
1310
|
+
var chunk;
|
1311
|
+
smalltalk.send((function(){
|
1312
|
+
chunk=smalltalk.send(aChunkParser,"_nextChunk",[]);
|
1313
|
+
chunk;
|
1314
|
+
return smalltalk.send(chunk,"_isEmpty",[]);
|
1315
|
+
}),"_whileFalse_",[(function(){
|
1316
|
+
return smalltalk.send(self,"_compileMethod_",[chunk]);
|
1317
|
+
})]);
|
1318
|
+
smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler),"_new",[]),"_setupClass_",[self["@class"]]);
|
1319
|
+
return self},
|
888
1320
|
args: ["aChunkParser"],
|
889
1321
|
source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09[chunk := aChunkParser nextChunk.\x0a\x09chunk isEmpty] whileFalse: [\x0a\x09 self compileMethod: chunk].\x0a\x09Compiler new setupClass: class",
|
890
|
-
messageSends: ["whileFalse:", "
|
1322
|
+
messageSends: ["whileFalse:", "compileMethod:", "nextChunk", "isEmpty", "setupClass:", "new"],
|
891
1323
|
referencedClasses: ["Compiler"]
|
892
1324
|
}),
|
893
1325
|
smalltalk.ClassCategoryReader);
|
@@ -903,8 +1335,8 @@ selector: "class:",
|
|
903
1335
|
category: 'accessing',
|
904
1336
|
fn: function (aClass){
|
905
1337
|
var self=this;
|
906
|
-
|
907
|
-
return self
|
1338
|
+
self["@class"]=aClass;
|
1339
|
+
return self},
|
908
1340
|
args: ["aClass"],
|
909
1341
|
source: "class: aClass\x0a\x09class := aClass",
|
910
1342
|
messageSends: [],
|
@@ -919,9 +1351,9 @@ selector: "initialize",
|
|
919
1351
|
category: 'initialization',
|
920
1352
|
fn: function (){
|
921
1353
|
var self=this;
|
922
|
-
smalltalk.send(self,
|
923
|
-
|
924
|
-
return self
|
1354
|
+
smalltalk.send(self,"_initialize",[],smalltalk.Object);
|
1355
|
+
self["@chunkParser"]=smalltalk.send((smalltalk.ChunkParser || ChunkParser),"_new",[]);
|
1356
|
+
return self},
|
925
1357
|
args: [],
|
926
1358
|
source: "initialize\x0a\x09super initialize.\x0a\x09chunkParser := ChunkParser new.",
|
927
1359
|
messageSends: ["initialize", "new"],
|
@@ -936,13 +1368,17 @@ selector: "scanFrom:",
|
|
936
1368
|
category: 'fileIn',
|
937
1369
|
fn: function (aChunkParser){
|
938
1370
|
var self=this;
|
939
|
-
var
|
940
|
-
|
941
|
-
|
942
|
-
|
1371
|
+
var $1;
|
1372
|
+
var chunk;
|
1373
|
+
chunk=smalltalk.send(aChunkParser,"_nextChunk",[]);
|
1374
|
+
$1=smalltalk.send(chunk,"_isEmpty",[]);
|
1375
|
+
if(! smalltalk.assert($1)){
|
1376
|
+
smalltalk.send(self,"_setComment_",[chunk]);
|
1377
|
+
};
|
1378
|
+
return self},
|
943
1379
|
args: ["aChunkParser"],
|
944
1380
|
source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09chunk := aChunkParser nextChunk.\x0a\x09chunk isEmpty ifFalse: [\x0a\x09 self setComment: chunk].",
|
945
|
-
messageSends: ["nextChunk", "ifFalse:", "
|
1381
|
+
messageSends: ["nextChunk", "ifFalse:", "setComment:", "isEmpty"],
|
946
1382
|
referencedClasses: []
|
947
1383
|
}),
|
948
1384
|
smalltalk.ClassCommentReader);
|
@@ -954,8 +1390,8 @@ selector: "setComment:",
|
|
954
1390
|
category: 'private',
|
955
1391
|
fn: function (aString){
|
956
1392
|
var self=this;
|
957
|
-
smalltalk.send(self[
|
958
|
-
return self
|
1393
|
+
smalltalk.send(self["@class"],"_comment_",[aString]);
|
1394
|
+
return self},
|
959
1395
|
args: ["aString"],
|
960
1396
|
source: "setComment: aString\x0a class comment: aString",
|
961
1397
|
messageSends: ["comment:"],
|
@@ -973,16 +1409,26 @@ selector: "getNodesFrom:",
|
|
973
1409
|
category: 'accessing',
|
974
1410
|
fn: function (aCollection){
|
975
1411
|
var self=this;
|
976
|
-
var
|
977
|
-
var
|
978
|
-
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
|
1412
|
+
var $1;
|
1413
|
+
var children;
|
1414
|
+
var others;
|
1415
|
+
children=[];
|
1416
|
+
others=[];
|
1417
|
+
smalltalk.send(aCollection,"_do_",[(function(each){
|
1418
|
+
$1=smalltalk.send(smalltalk.send(each,"_superclass",[]),"__eq",[smalltalk.send(self,"_theClass",[])]);
|
1419
|
+
if(smalltalk.assert($1)){
|
1420
|
+
return smalltalk.send(children,"_add_",[each]);
|
1421
|
+
} else {
|
1422
|
+
return smalltalk.send(others,"_add_",[each]);
|
1423
|
+
};
|
1424
|
+
})]);
|
1425
|
+
self["@nodes"]=smalltalk.send(children,"_collect_",[(function(each){
|
1426
|
+
return smalltalk.send((smalltalk.ClassSorterNode || ClassSorterNode),"_on_classes_level_",[each,others,smalltalk.send(smalltalk.send(self,"_level",[]),"__plus",[(1)])]);
|
1427
|
+
})]);
|
1428
|
+
return self},
|
983
1429
|
args: ["aCollection"],
|
984
1430
|
source: "getNodesFrom: aCollection\x0a\x09| children others |\x0a\x09children := #().\x0a\x09others := #().\x0a\x09aCollection do: [:each |\x0a\x09\x09(each superclass = self theClass)\x0a\x09\x09\x09ifTrue: [children add: each]\x0a\x09\x09\x09ifFalse: [others add: each]].\x0a\x09nodes:= children collect: [:each |\x0a\x09\x09ClassSorterNode on: each classes: others level: self level + 1]",
|
985
|
-
messageSends: ["do:", "ifTrue:ifFalse:", "
|
1431
|
+
messageSends: ["do:", "ifTrue:ifFalse:", "add:", "=", "theClass", "superclass", "collect:", "on:classes:level:", "+", "level"],
|
986
1432
|
referencedClasses: ["ClassSorterNode"]
|
987
1433
|
}),
|
988
1434
|
smalltalk.ClassSorterNode);
|
@@ -994,8 +1440,8 @@ selector: "level",
|
|
994
1440
|
category: 'accessing',
|
995
1441
|
fn: function (){
|
996
1442
|
var self=this;
|
997
|
-
return self[
|
998
|
-
|
1443
|
+
return self["@level"];
|
1444
|
+
},
|
999
1445
|
args: [],
|
1000
1446
|
source: "level\x0a\x09^level",
|
1001
1447
|
messageSends: [],
|
@@ -1010,8 +1456,8 @@ selector: "level:",
|
|
1010
1456
|
category: 'accessing',
|
1011
1457
|
fn: function (anInteger){
|
1012
1458
|
var self=this;
|
1013
|
-
|
1014
|
-
return self
|
1459
|
+
self["@level"]=anInteger;
|
1460
|
+
return self},
|
1015
1461
|
args: ["anInteger"],
|
1016
1462
|
source: "level: anInteger\x0a\x09level := anInteger",
|
1017
1463
|
messageSends: [],
|
@@ -1026,8 +1472,8 @@ selector: "nodes",
|
|
1026
1472
|
category: 'accessing',
|
1027
1473
|
fn: function (){
|
1028
1474
|
var self=this;
|
1029
|
-
return self[
|
1030
|
-
|
1475
|
+
return self["@nodes"];
|
1476
|
+
},
|
1031
1477
|
args: [],
|
1032
1478
|
source: "nodes\x0a\x09^nodes",
|
1033
1479
|
messageSends: [],
|
@@ -1042,8 +1488,8 @@ selector: "theClass",
|
|
1042
1488
|
category: 'accessing',
|
1043
1489
|
fn: function (){
|
1044
1490
|
var self=this;
|
1045
|
-
return self[
|
1046
|
-
|
1491
|
+
return self["@theClass"];
|
1492
|
+
},
|
1047
1493
|
args: [],
|
1048
1494
|
source: "theClass\x0a\x09^theClass",
|
1049
1495
|
messageSends: [],
|
@@ -1058,8 +1504,8 @@ selector: "theClass:",
|
|
1058
1504
|
category: 'accessing',
|
1059
1505
|
fn: function (aClass){
|
1060
1506
|
var self=this;
|
1061
|
-
|
1062
|
-
return self
|
1507
|
+
self["@theClass"]=aClass;
|
1508
|
+
return self},
|
1063
1509
|
args: ["aClass"],
|
1064
1510
|
source: "theClass: aClass\x0a\x09theClass := aClass",
|
1065
1511
|
messageSends: [],
|
@@ -1074,12 +1520,16 @@ selector: "traverseClassesWith:",
|
|
1074
1520
|
category: 'visiting',
|
1075
1521
|
fn: function (aCollection){
|
1076
1522
|
var self=this;
|
1077
|
-
smalltalk.send(aCollection,
|
1078
|
-
smalltalk.send(smalltalk.send(smalltalk.send(self,
|
1079
|
-
return
|
1523
|
+
smalltalk.send(aCollection,"_add_",[smalltalk.send(self,"_theClass",[])]);
|
1524
|
+
smalltalk.send(smalltalk.send(smalltalk.send(self,"_nodes",[]),"_sorted_",[(function(a,b){
|
1525
|
+
return smalltalk.send(smalltalk.send(smalltalk.send(a,"_theClass",[]),"_name",[]),"__lt_eq",[smalltalk.send(smalltalk.send(b,"_theClass",[]),"_name",[])]);
|
1526
|
+
})]),"_do_",[(function(aNode){
|
1527
|
+
return smalltalk.send(aNode,"_traverseClassesWith_",[aCollection]);
|
1528
|
+
})]);
|
1529
|
+
return self},
|
1080
1530
|
args: ["aCollection"],
|
1081
1531
|
source: "traverseClassesWith: aCollection\x0a\x09\x22sort classes alphabetically Issue #143\x22\x0a\x0a\x09aCollection add: self theClass.\x0a\x09(self nodes sorted: [:a :b | a theClass name <= b theClass name ]) do: [:aNode |\x0a\x09\x09aNode traverseClassesWith: aCollection ].",
|
1082
|
-
messageSends: ["add:", "theClass", "do:", "
|
1532
|
+
messageSends: ["add:", "theClass", "do:", "traverseClassesWith:", "sorted:", "<=", "name", "nodes"],
|
1083
1533
|
referencedClasses: []
|
1084
1534
|
}),
|
1085
1535
|
smalltalk.ClassSorterNode);
|
@@ -1090,13 +1540,20 @@ smalltalk.addMethod(
|
|
1090
1540
|
smalltalk.method({
|
1091
1541
|
selector: "on:classes:level:",
|
1092
1542
|
category: 'instance creation',
|
1093
|
-
fn: function (aClass,
|
1094
|
-
var self=this;
|
1095
|
-
|
1096
|
-
|
1543
|
+
fn: function (aClass,aCollection,anInteger){
|
1544
|
+
var self=this;
|
1545
|
+
var $2,$3,$1;
|
1546
|
+
$2=smalltalk.send(self,"_new",[]);
|
1547
|
+
smalltalk.send($2,"_theClass_",[aClass]);
|
1548
|
+
smalltalk.send($2,"_level_",[anInteger]);
|
1549
|
+
smalltalk.send($2,"_getNodesFrom_",[aCollection]);
|
1550
|
+
$3=smalltalk.send($2,"_yourself",[]);
|
1551
|
+
$1=$3;
|
1552
|
+
return $1;
|
1553
|
+
},
|
1097
1554
|
args: ["aClass", "aCollection", "anInteger"],
|
1098
1555
|
source: "on: aClass classes: aCollection level: anInteger\x0a\x09^self new\x0a\x09\x09theClass: aClass;\x0a\x09\x09level: anInteger;\x0a\x09\x09getNodesFrom: aCollection;\x0a\x09\x09yourself",
|
1099
|
-
messageSends: ["theClass:", "level:", "getNodesFrom:", "yourself"
|
1556
|
+
messageSends: ["theClass:", "new", "level:", "getNodesFrom:", "yourself"],
|
1100
1557
|
referencedClasses: []
|
1101
1558
|
}),
|
1102
1559
|
smalltalk.ClassSorterNode.klass);
|