resin 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. data/README.markdown +2 -0
  2. data/amber/bin/nodecompile.js +3 -3
  3. data/amber/css/amber.css +47 -23
  4. data/amber/images/off.amber.png +0 -0
  5. data/amber/images/offHover.amber.png +0 -0
  6. data/amber/images/sprite.amber.png +0 -0
  7. data/amber/images/tinylogo.amber.png +0 -0
  8. data/amber/js/Benchfib.deploy.js +34 -34
  9. data/amber/js/Benchfib.js +49 -49
  10. data/amber/js/Canvas.deploy.js +937 -937
  11. data/amber/js/Canvas.js +1622 -1622
  12. data/amber/js/Compiler-Tests.deploy.js +97 -0
  13. data/amber/js/Compiler-Tests.js +137 -0
  14. data/amber/js/Compiler.deploy.js +1030 -924
  15. data/amber/js/Compiler.js +1613 -1467
  16. data/amber/js/Documentation.deploy.js +417 -417
  17. data/amber/js/Documentation.js +728 -728
  18. data/amber/js/Examples.deploy.js +24 -13
  19. data/amber/js/Examples.js +36 -19
  20. data/amber/js/IDE.deploy.js +1583 -1527
  21. data/amber/js/IDE.js +2586 -2510
  22. data/amber/js/Kernel-Announcements.deploy.js +19 -19
  23. data/amber/js/Kernel-Announcements.js +28 -28
  24. data/amber/js/Kernel-Classes.deploy.js +332 -229
  25. data/amber/js/Kernel-Classes.js +532 -384
  26. data/amber/js/Kernel-Collections.deploy.js +1516 -1712
  27. data/amber/js/Kernel-Collections.js +2436 -2712
  28. data/amber/js/Kernel-Exceptions.deploy.js +85 -62
  29. data/amber/js/Kernel-Exceptions.js +131 -98
  30. data/amber/js/Kernel-Methods.deploy.js +326 -378
  31. data/amber/js/Kernel-Methods.js +473 -525
  32. data/amber/js/Kernel-Objects.deploy.js +1777 -2428
  33. data/amber/js/Kernel-Objects.js +2599 -3426
  34. data/amber/js/Kernel-Tests.deploy.js +871 -772
  35. data/amber/js/Kernel-Tests.js +1207 -1083
  36. data/amber/js/Kernel-Transcript.deploy.js +57 -57
  37. data/amber/js/Kernel-Transcript.js +94 -94
  38. data/amber/js/SUnit.deploy.js +116 -116
  39. data/amber/js/SUnit.js +211 -211
  40. data/amber/js/amber.js +10 -11
  41. data/amber/js/boot.js +132 -156
  42. data/amber/js/init.js +2 -2
  43. data/amber/js/parser.js +2095 -3014
  44. data/amber/js/parser.pegjs +1 -1
  45. data/amber/st/Benchfib.st +22 -22
  46. data/amber/st/Canvas.st +471 -471
  47. data/amber/st/Compiler-Tests.st +471 -0
  48. data/amber/st/Compiler.st +858 -794
  49. data/amber/st/Examples.st +22 -5
  50. data/amber/st/IDE.st +1326 -1291
  51. data/amber/st/Kernel-Announcements.st +2 -2
  52. data/amber/st/Kernel-Classes.st +148 -90
  53. data/amber/st/Kernel-Collections.st +950 -1061
  54. data/amber/st/Kernel-Exceptions.st +33 -25
  55. data/amber/st/Kernel-Methods.st +151 -151
  56. data/amber/st/Kernel-Objects.st +891 -1036
  57. data/amber/st/Kernel-Tests.st +622 -544
  58. data/amber/st/Kernel-Transcript.st +38 -38
  59. data/amber/st/SUnit.st +53 -53
  60. metadata +27 -20
@@ -1,807 +1,755 @@
1
1
  smalltalk.addPackage('Kernel-Methods', {});
2
- smalltalk.addClass('Message', smalltalk.Object, ['selector', 'arguments'], 'Kernel-Methods');
3
- smalltalk.Message.comment=unescape('Generally%2C%20the%20system%20does%20not%20use%20instances%20of%20Message%20for%20efficiency%20reasons.%0AHowever%2C%20when%20a%20message%20is%20not%20understood%20by%20its%20receiver%2C%20the%20interpreter%20will%20make%20up%20an%20instance%20of%20it%20in%20order%20to%20capture%20the%20information%20involved%20in%20an%20actual%20message%20transmission.%20%0AThis%20instance%20is%20sent%20it%20as%20an%20argument%20with%20the%20message%20%60doesNotUnderstand%3A%60%20to%20the%20receiver.%0A%0ASee%20boot.js%2C%20%60messageNotUnderstood%60%20%20and%20its%20counterpart%20%60Object%3E%3EdoesNotUnderstand%3A%60')
4
- smalltalk.addMethod(
5
- unescape('_selector'),
6
- smalltalk.method({
7
- selector: unescape('selector'),
8
- category: 'accessing',
9
- fn: function () {
10
- var self = this;
11
- return self['@selector'];
12
- return self;
13
- },
14
- args: [],
15
- source: unescape('selector%0A%09%5Eselector'),
16
- messageSends: [],
17
- referencedClasses: []
18
- }),
19
- smalltalk.Message);
20
-
21
- smalltalk.addMethod(
22
- unescape('_selector_'),
23
- smalltalk.method({
24
- selector: unescape('selector%3A'),
25
- category: 'accessing',
26
- fn: function (aString) {
27
- var self = this;
28
- self['@selector'] = aString;
29
- return self;
30
- },
31
- args: ["aString"],
32
- source: unescape('selector%3A%20aString%0A%09selector%20%3A%3D%20aString'),
33
- messageSends: [],
34
- referencedClasses: []
35
- }),
36
- smalltalk.Message);
37
-
2
+ smalltalk.addClass('BlockClosure', smalltalk.Object, [], 'Kernel-Methods');
3
+ smalltalk.BlockClosure.comment="A BlockClosure is a lexical closure.\x0aThe JavaScript representation is a function.\x0a\x0aA BlockClosure is evaluated with the `#value*` methods in the 'evaluating' protocol."
38
4
  smalltalk.addMethod(
39
- unescape('_arguments_'),
5
+ "_applyTo_arguments_",
40
6
  smalltalk.method({
41
- selector: unescape('arguments%3A'),
42
- category: 'accessing',
43
- fn: function (anArray) {
44
- var self = this;
45
- self['@arguments'] = anArray;
46
- return self;
47
- },
48
- args: ["anArray"],
49
- source: unescape('arguments%3A%20anArray%0A%09arguments%20%3A%3D%20anArray'),
7
+ selector: "applyTo:arguments:",
8
+ category: 'evaluating',
9
+ fn: function (anObject, aCollection){
10
+ var self=this;
11
+ return self.apply(anObject, aCollection);
12
+ return self;},
13
+ args: ["anObject", "aCollection"],
14
+ source: "applyTo: anObject arguments: aCollection\x0a\x09<return self.apply(anObject, aCollection)>",
50
15
  messageSends: [],
51
16
  referencedClasses: []
52
17
  }),
53
- smalltalk.Message);
18
+ smalltalk.BlockClosure);
54
19
 
55
20
  smalltalk.addMethod(
56
- unescape('_arguments'),
21
+ "_compiledSource",
57
22
  smalltalk.method({
58
- selector: unescape('arguments'),
23
+ selector: "compiledSource",
59
24
  category: 'accessing',
60
- fn: function () {
61
- var self = this;
62
- return self['@arguments'];
63
- return self;
64
- },
25
+ fn: function (){
26
+ var self=this;
27
+ return self.toString();
28
+ return self;},
65
29
  args: [],
66
- source: unescape('arguments%0A%09%5Earguments'),
30
+ source: "compiledSource\x0a\x09<return self.toString()>",
67
31
  messageSends: [],
68
32
  referencedClasses: []
69
33
  }),
70
- smalltalk.Message);
71
-
72
- smalltalk.addMethod(
73
- unescape('_printString'),
74
- smalltalk.method({
75
- selector: unescape('printString'),
76
- category: 'printing',
77
- fn: function () {
78
- var self = this;
79
- return smalltalk.send(smalltalk.String || String, "_streamContents_", [function (aStream) {return function ($rec) {smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(self, "_printString", [], smalltalk.Object)]);smalltalk.send($rec, "_nextPutAll_", [unescape("%28")]);smalltalk.send($rec, "_nextPutAll_", [self['@selector']]);return smalltalk.send($rec, "_nextPutAll_", [unescape("%29")]);}(aStream);}]);
80
- return self;
81
- },
82
- args: [],
83
- source: unescape('printString%0A%09%5E%20String%20streamContents%3A%20%5B%3AaStream%7C%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09%09aStream%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09%09%09nextPutAll%3A%20super%20printString%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09%09%09nextPutAll%3A%20%27%28%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09%09%09nextPutAll%3A%20selector%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09%09%09nextPutAll%3A%20%27%29%27%20%09%09%09%09%5D'),
84
- messageSends: ["streamContents:", "nextPutAll:", "printString"],
85
- referencedClasses: ["String"]
86
- }),
87
- smalltalk.Message);
88
-
89
- smalltalk.addMethod(
90
- unescape('_sendTo_'),
91
- smalltalk.method({
92
- selector: unescape('sendTo%3A'),
93
- category: 'printing',
94
- fn: function (anObject) {
95
- var self = this;
96
- smalltalk.send(smalltalk.send(smalltalk.Smalltalk || Smalltalk, "_current", []), "_send_to_arguments_", [smalltalk.send(self, "_selector", []), anObject, smalltalk.send(self, "_arguments", [])]);
97
- return self;
98
- },
99
- args: ["anObject"],
100
- source: unescape('sendTo%3A%20anObject%0A%09Smalltalk%20current%20send%3A%20self%20selector%20to%3A%20anObject%20arguments%3A%20self%20arguments'),
101
- messageSends: ["send:to:arguments:", "current", "selector", "arguments"],
102
- referencedClasses: ["Smalltalk"]
103
- }),
104
- smalltalk.Message);
105
-
34
+ smalltalk.BlockClosure);
106
35
 
107
36
  smalltalk.addMethod(
108
- unescape('_selector_arguments_'),
37
+ "_ensure_",
109
38
  smalltalk.method({
110
- selector: unescape('selector%3Aarguments%3A'),
111
- category: 'instance creation',
112
- fn: function (aString, anArray) {
113
- var self = this;
114
- return function ($rec) {smalltalk.send($rec, "_selector_", [aString]);smalltalk.send($rec, "_arguments_", [anArray]);return smalltalk.send($rec, "_yourself", []);}(smalltalk.send(self, "_new", []));
115
- return self;
116
- },
117
- args: ["aString", "anArray"],
118
- source: unescape('selector%3A%20aString%20arguments%3A%20anArray%0A%09%5Eself%20new%0A%09%09selector%3A%20aString%3B%0A%09%09arguments%3A%20anArray%3B%0A%09%09yourself'),
119
- messageSends: ["selector:", "arguments:", "yourself", "new"],
120
- referencedClasses: []
39
+ selector: "ensure:",
40
+ category: 'evaluating',
41
+ fn: function (aBlock){
42
+ var self=this;
43
+ var success=nil;
44
+ (success=false);
45
+ return smalltalk.send((function(){smalltalk.send(self, "_value", []);(success=true);return smalltalk.send(aBlock, "_value", []);}), "_on_do_", [(smalltalk.Error || Error), (function(ex){((($receiver = success).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(aBlock, "_value", []);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(aBlock, "_value", []);})]));return smalltalk.send(ex, "_signal", []);})]);
46
+ return self;},
47
+ args: ["aBlock"],
48
+ source: "ensure: aBlock\x0a\x09| success |\x0a\x09success := false.\x0a\x09^[self value. success := true. aBlock value]\x0a\x09\x09on: Error\x0a\x09\x09do: [:ex |\x0a\x09\x09\x09success ifFalse: [aBlock value].\x0a\x09\x09\x09ex signal]",
49
+ messageSends: ["on:do:", "value", "ifFalse:", "signal"],
50
+ referencedClasses: ["Error"]
121
51
  }),
122
- smalltalk.Message.klass);
123
-
52
+ smalltalk.BlockClosure);
124
53
 
125
- smalltalk.addClass('MethodContext', smalltalk.Object, [], 'Kernel-Methods');
126
- smalltalk.MethodContext.comment=unescape('MethodContext%20holds%20all%20the%20dynamic%20state%20associated%20with%20the%20execution%20of%20either%20a%20method%20activation%20resulting%20from%20a%20message%20send.%20That%20is%20used%20to%20build%20the%20call%20stack%20while%20debugging.%0A%20%20%0AMethodContext%20instances%20are%20JavaScript%20%60SmalltalkMethodContext%60%20objects%20defined%20in%20boot.js%20%0A%0ACurrent%20limitation%3A%20MethodContext%20instances%20are%20not%20created%20on%20Block%20evaluation.%20That%20means%20it%27s%20actually%20impossible%20to%20debug%20inside%20a%20Block.')
127
54
  smalltalk.addMethod(
128
- unescape('_receiver'),
55
+ "_new",
129
56
  smalltalk.method({
130
- selector: unescape('receiver'),
131
- category: 'accessing',
132
- fn: function () {
133
- var self = this;
134
- return self.receiver;
135
- return self;
136
- },
57
+ selector: "new",
58
+ category: 'evaluating',
59
+ fn: function (){
60
+ var self=this;
61
+ return new self();
62
+ return self;},
137
63
  args: [],
138
- source: unescape('receiver%0A%09%3Creturn%20self.receiver%3E'),
64
+ source: "new\x0a\x09\x22Use the receiver as a JS constructor. \x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self()>",
139
65
  messageSends: [],
140
66
  referencedClasses: []
141
67
  }),
142
- smalltalk.MethodContext);
68
+ smalltalk.BlockClosure);
143
69
 
144
70
  smalltalk.addMethod(
145
- unescape('_selector'),
71
+ "_newValue_",
146
72
  smalltalk.method({
147
- selector: unescape('selector'),
148
- category: 'accessing',
149
- fn: function () {
150
- var self = this;
151
- return smalltalk.convertSelector(self.selector);
152
- return self;
153
- },
154
- args: [],
155
- source: unescape('selector%0A%09%3Creturn%20smalltalk.convertSelector%28self.selector%29%3E'),
73
+ selector: "newValue:",
74
+ category: 'evaluating',
75
+ fn: function (anObject){
76
+ var self=this;
77
+ return new self(anObject);
78
+ return self;},
79
+ args: ["anObject"],
80
+ source: "newValue: anObject\x0a\x09\x22Use the receiver as a JS constructor. \x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self(anObject)>",
156
81
  messageSends: [],
157
82
  referencedClasses: []
158
83
  }),
159
- smalltalk.MethodContext);
84
+ smalltalk.BlockClosure);
160
85
 
161
86
  smalltalk.addMethod(
162
- unescape('_home'),
87
+ "_newValue_value_",
163
88
  smalltalk.method({
164
- selector: unescape('home'),
165
- category: 'accessing',
166
- fn: function () {
167
- var self = this;
168
- return self.homeContext;
169
- return self;
170
- },
171
- args: [],
172
- source: unescape('home%0A%09%3Creturn%20self.homeContext%3E'),
89
+ selector: "newValue:value:",
90
+ category: 'evaluating',
91
+ fn: function (anObject, anObject2){
92
+ var self=this;
93
+ return new self(anObject, anObject2);
94
+ return self;},
95
+ args: ["anObject", "anObject2"],
96
+ source: "newValue: anObject value: anObject2\x0a\x09\x22Use the receiver as a JS constructor. \x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self(anObject, anObject2)>",
173
97
  messageSends: [],
174
98
  referencedClasses: []
175
99
  }),
176
- smalltalk.MethodContext);
100
+ smalltalk.BlockClosure);
177
101
 
178
102
  smalltalk.addMethod(
179
- unescape('_temps'),
103
+ "_newValue_value_value_",
180
104
  smalltalk.method({
181
- selector: unescape('temps'),
182
- category: 'accessing',
183
- fn: function () {
184
- var self = this;
185
- return self.temps;
186
- return self;
187
- },
188
- args: [],
189
- source: unescape('temps%0A%09%3Creturn%20self.temps%3E'),
105
+ selector: "newValue:value:value:",
106
+ category: 'evaluating',
107
+ fn: function (anObject, anObject2, anObject3){
108
+ var self=this;
109
+ return new self(anObject, anObject2);
110
+ return self;},
111
+ args: ["anObject", "anObject2", "anObject3"],
112
+ source: "newValue: anObject value: anObject2 value: anObject3\x0a\x09\x22Use the receiver as a JS constructor. \x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<return new self(anObject, anObject2)>",
190
113
  messageSends: [],
191
114
  referencedClasses: []
192
115
  }),
193
- smalltalk.MethodContext);
194
-
195
- smalltalk.addMethod(
196
- unescape('_printString'),
197
- smalltalk.method({
198
- selector: unescape('printString'),
199
- category: 'accessing',
200
- fn: function () {
201
- var self = this;
202
- return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_printString", [], smalltalk.Object), "__comma", [unescape("%28")]), "__comma", [smalltalk.send(self, "_asString", [])]), "__comma", [unescape("%29")]);
203
- return self;
204
- },
205
- args: [],
206
- source: unescape('printString%0A%09%5Esuper%20printString%2C%20%27%28%27%2C%20self%20asString%2C%20%27%29%27'),
207
- messageSends: [unescape("%2C"), "printString", "asString"],
208
- referencedClasses: []
209
- }),
210
- smalltalk.MethodContext);
211
-
212
- smalltalk.addMethod(
213
- unescape('_asString'),
214
- smalltalk.method({
215
- selector: unescape('asString'),
216
- category: 'accessing',
217
- fn: function () {
218
- var self = this;
219
- return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_receiver", []), "_class", []), "_printString", []), "__comma", [unescape("%20%3E%3E%20")]), "__comma", [smalltalk.send(self, "_selector", [])]);
220
- return self;
221
- },
222
- args: [],
223
- source: unescape('asString%0A%09%5Eself%20receiver%20class%20printString%2C%20%27%20%3E%3E%20%27%2C%20self%20selector'),
224
- messageSends: [unescape("%2C"), "printString", "class", "receiver", "selector"],
225
- referencedClasses: []
226
- }),
227
- smalltalk.MethodContext);
228
-
229
-
116
+ smalltalk.BlockClosure);
230
117
 
231
- smalltalk.addClass('BlockClosure', smalltalk.Object, [], 'Kernel-Methods');
232
- smalltalk.BlockClosure.comment=unescape('A%20BlockClosure%20is%20a%20lexical%20closure.%0AThe%20JavaScript%20representation%20is%20a%20function.%0A%0AA%20BlockClosure%20is%20evaluated%20with%20the%20%60%23value*%60%20methods%20in%20the%20%27evaluating%27%20protocol.')
233
118
  smalltalk.addMethod(
234
- unescape('_compiledSource'),
119
+ "_numArgs",
235
120
  smalltalk.method({
236
- selector: unescape('compiledSource'),
121
+ selector: "numArgs",
237
122
  category: 'accessing',
238
- fn: function () {
239
- var self = this;
240
- return self.toString();
241
- return self;
242
- },
123
+ fn: function (){
124
+ var self=this;
125
+ return self.length;
126
+ return self;},
243
127
  args: [],
244
- source: unescape('compiledSource%0A%09%3Creturn%20self.toString%28%29%3E'),
128
+ source: "numArgs\x0a\x09<return self.length>",
245
129
  messageSends: [],
246
130
  referencedClasses: []
247
131
  }),
248
132
  smalltalk.BlockClosure);
249
133
 
250
134
  smalltalk.addMethod(
251
- unescape('_whileTrue_'),
135
+ "_on_do_",
252
136
  smalltalk.method({
253
- selector: unescape('whileTrue%3A'),
254
- category: 'controlling',
255
- fn: function (aBlock) {
256
- var self = this;
257
- while (self()) {
258
- aBlock();
259
- }
260
- return self;
261
- },
262
- args: ["aBlock"],
263
- source: unescape('whileTrue%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%3Cwhile%28self%28%29%29%20%7BaBlock%28%29%7D%3E'),
264
- messageSends: [],
137
+ selector: "on:do:",
138
+ category: 'error handling',
139
+ fn: function (anErrorClass, aBlock){
140
+ var self=this;
141
+ return smalltalk.send(self, "_try_catch_", [self, (function(error){return ((($receiver = smalltalk.send(error, "_isKindOf_", [anErrorClass])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(aBlock, "_value_", [error]);})() : (function(){return smalltalk.send(error, "_signal", []);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(aBlock, "_value_", [error]);}), (function(){return smalltalk.send(error, "_signal", []);})]));})]);
142
+ return self;},
143
+ args: ["anErrorClass", "aBlock"],
144
+ source: "on: anErrorClass do: aBlock\x0a\x09^self try: self catch: [:error |\x0a\x09 (error isKindOf: anErrorClass) \x0a\x09 ifTrue: [aBlock value: error]\x0a\x09 ifFalse: [error signal]]",
145
+ messageSends: ["try:catch:", "ifTrue:ifFalse:", "isKindOf:", "value:", "signal"],
265
146
  referencedClasses: []
266
147
  }),
267
148
  smalltalk.BlockClosure);
268
149
 
269
150
  smalltalk.addMethod(
270
- unescape('_whileFalse_'),
151
+ "_timeToRun",
271
152
  smalltalk.method({
272
- selector: unescape('whileFalse%3A'),
273
- category: 'controlling',
274
- fn: function (aBlock) {
275
- var self = this;
276
- while (!self()) {
277
- aBlock();
278
- }
279
- return self;
280
- },
281
- args: ["aBlock"],
282
- source: unescape('whileFalse%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%3Cwhile%28%21self%28%29%29%20%7BaBlock%28%29%7D%3E'),
283
- messageSends: [],
284
- referencedClasses: []
153
+ selector: "timeToRun",
154
+ category: 'evaluating',
155
+ fn: function (){
156
+ var self=this;
157
+ return smalltalk.send((smalltalk.Date || Date), "_millisecondsToRun_", [self]);
158
+ return self;},
159
+ args: [],
160
+ source: "timeToRun\x0a\x09\x22Answer the number of milliseconds taken to execute this block.\x22\x0a\x0a\x09^ Date millisecondsToRun: self",
161
+ messageSends: ["millisecondsToRun:"],
162
+ referencedClasses: ["Date"]
285
163
  }),
286
164
  smalltalk.BlockClosure);
287
165
 
288
166
  smalltalk.addMethod(
289
- unescape('_value'),
167
+ "_value",
290
168
  smalltalk.method({
291
- selector: unescape('value'),
169
+ selector: "value",
292
170
  category: 'evaluating',
293
- fn: function () {
294
- var self = this;
295
- return self();
296
- return self;
297
- },
171
+ fn: function (){
172
+ var self=this;
173
+ return self();;
174
+ return self;},
298
175
  args: [],
299
- source: unescape('value%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%28%29%3B%3E'),
176
+ source: "value\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self();>",
300
177
  messageSends: [],
301
178
  referencedClasses: []
302
179
  }),
303
180
  smalltalk.BlockClosure);
304
181
 
305
182
  smalltalk.addMethod(
306
- unescape('_value_'),
183
+ "_value_",
307
184
  smalltalk.method({
308
- selector: unescape('value%3A'),
185
+ selector: "value:",
309
186
  category: 'evaluating',
310
- fn: function (anArg) {
311
- var self = this;
312
- return self(anArg);
313
- return self;
314
- },
187
+ fn: function (anArg){
188
+ var self=this;
189
+ return self(anArg);;
190
+ return self;},
315
191
  args: ["anArg"],
316
- source: unescape('value%3A%20anArg%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%28anArg%29%3B%3E'),
192
+ source: "value: anArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(anArg);>",
317
193
  messageSends: [],
318
194
  referencedClasses: []
319
195
  }),
320
196
  smalltalk.BlockClosure);
321
197
 
322
198
  smalltalk.addMethod(
323
- unescape('_value_value_'),
199
+ "_value_value_",
324
200
  smalltalk.method({
325
- selector: unescape('value%3Avalue%3A'),
201
+ selector: "value:value:",
326
202
  category: 'evaluating',
327
- fn: function (firstArg, secondArg) {
328
- var self = this;
329
- return self(firstArg, secondArg);
330
- return self;
331
- },
203
+ fn: function (firstArg, secondArg){
204
+ var self=this;
205
+ return self(firstArg, secondArg);;
206
+ return self;},
332
207
  args: ["firstArg", "secondArg"],
333
- source: unescape('value%3A%20firstArg%20value%3A%20secondArg%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%28firstArg%2C%20secondArg%29%3B%3E'),
208
+ source: "value: firstArg value: secondArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(firstArg, secondArg);>",
334
209
  messageSends: [],
335
210
  referencedClasses: []
336
211
  }),
337
212
  smalltalk.BlockClosure);
338
213
 
339
214
  smalltalk.addMethod(
340
- unescape('_value_value_value_'),
215
+ "_value_value_value_",
341
216
  smalltalk.method({
342
- selector: unescape('value%3Avalue%3Avalue%3A'),
217
+ selector: "value:value:value:",
343
218
  category: 'evaluating',
344
- fn: function (firstArg, secondArg, thirdArg) {
345
- var self = this;
346
- return self(firstArg, secondArg, thirdArg);
347
- return self;
348
- },
219
+ fn: function (firstArg, secondArg, thirdArg){
220
+ var self=this;
221
+ return self(firstArg, secondArg, thirdArg);;
222
+ return self;},
349
223
  args: ["firstArg", "secondArg", "thirdArg"],
350
- source: unescape('value%3A%20firstArg%20value%3A%20secondArg%20value%3A%20thirdArg%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%28firstArg%2C%20secondArg%2C%20thirdArg%29%3B%3E'),
224
+ source: "value: firstArg value: secondArg value: thirdArg\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<return self(firstArg, secondArg, thirdArg);>",
351
225
  messageSends: [],
352
226
  referencedClasses: []
353
227
  }),
354
228
  smalltalk.BlockClosure);
355
229
 
356
230
  smalltalk.addMethod(
357
- unescape('_valueWithPossibleArguments_'),
231
+ "_valueWithInterval_",
358
232
  smalltalk.method({
359
- selector: unescape('valueWithPossibleArguments%3A'),
360
- category: 'evaluating',
361
- fn: function (aCollection) {
362
- var self = this;
363
- return self.apply(null, aCollection);
364
- return self;
365
- },
366
- args: ["aCollection"],
367
- source: unescape('valueWithPossibleArguments%3A%20aCollection%0A%09%3Creturn%20self.apply%28null%2C%20aCollection%29%3B%3E'),
233
+ selector: "valueWithInterval:",
234
+ category: 'timeout/interval',
235
+ fn: function (aNumber){
236
+ var self=this;
237
+ return setInterval(self, aNumber);
238
+ return self;},
239
+ args: ["aNumber"],
240
+ source: "valueWithInterval: aNumber\x0a\x09<return setInterval(self, aNumber)>",
368
241
  messageSends: [],
369
242
  referencedClasses: []
370
243
  }),
371
244
  smalltalk.BlockClosure);
372
245
 
373
246
  smalltalk.addMethod(
374
- unescape('_on_do_'),
247
+ "_valueWithPossibleArguments_",
375
248
  smalltalk.method({
376
- selector: unescape('on%3Ado%3A'),
377
- category: 'error handling',
378
- fn: function (anErrorClass, aBlock) {
379
- var self = this;
380
- return smalltalk.send(self, "_try_catch_", [self, function (error) {return ($receiver = smalltalk.send(error, "_isKindOf_", [anErrorClass])).klass === smalltalk.Boolean ? $receiver ? function () {return smalltalk.send(aBlock, "_value_", [error]);}() : function () {return smalltalk.send(error, "_signal", []);}() : smalltalk.send($receiver, "_ifTrue_ifFalse_", [function () {return smalltalk.send(aBlock, "_value_", [error]);}, function () {return smalltalk.send(error, "_signal", []);}]);}]);
381
- return self;
382
- },
383
- args: ["anErrorClass", "aBlock"],
384
- source: unescape('on%3A%20anErrorClass%20do%3A%20aBlock%0A%09%5Eself%20try%3A%20self%20catch%3A%20%5B%3Aerror%20%7C%0A%09%20%20%20%20%28error%20isKindOf%3A%20anErrorClass%29%20%0A%09%20%20%20%20%20ifTrue%3A%20%5BaBlock%20value%3A%20error%5D%0A%09%20%20%20%20%20ifFalse%3A%20%5Berror%20signal%5D%5D'),
385
- messageSends: ["try:catch:", "ifTrue:ifFalse:", "isKindOf:", "value:", "signal"],
249
+ selector: "valueWithPossibleArguments:",
250
+ category: 'evaluating',
251
+ fn: function (aCollection){
252
+ var self=this;
253
+ return self.apply(null, aCollection);;
254
+ return self;},
255
+ args: ["aCollection"],
256
+ source: "valueWithPossibleArguments: aCollection\x0a\x09<return self.apply(null, aCollection);>",
257
+ messageSends: [],
386
258
  referencedClasses: []
387
259
  }),
388
260
  smalltalk.BlockClosure);
389
261
 
390
262
  smalltalk.addMethod(
391
- unescape('_valueWithTimeout_'),
263
+ "_valueWithTimeout_",
392
264
  smalltalk.method({
393
- selector: unescape('valueWithTimeout%3A'),
265
+ selector: "valueWithTimeout:",
394
266
  category: 'timeout/interval',
395
- fn: function (aNumber) {
396
- var self = this;
397
- return setTimeout(self, aNumber);
398
- return self;
399
- },
267
+ fn: function (aNumber){
268
+ var self=this;
269
+ return setTimeout(self, aNumber);
270
+ return self;},
400
271
  args: ["aNumber"],
401
- source: unescape('valueWithTimeout%3A%20aNumber%0A%09%3Creturn%20setTimeout%28self%2C%20aNumber%29%3E'),
272
+ source: "valueWithTimeout: aNumber\x0a\x09<return setTimeout(self, aNumber)>",
402
273
  messageSends: [],
403
274
  referencedClasses: []
404
275
  }),
405
276
  smalltalk.BlockClosure);
406
277
 
407
278
  smalltalk.addMethod(
408
- unescape('_valueWithInterval_'),
279
+ "_whileFalse",
409
280
  smalltalk.method({
410
- selector: unescape('valueWithInterval%3A'),
411
- category: 'timeout/interval',
412
- fn: function (aNumber) {
413
- var self = this;
414
- return setInterval(self, aNumber);
415
- return self;
416
- },
417
- args: ["aNumber"],
418
- source: unescape('valueWithInterval%3A%20aNumber%0A%09%3Creturn%20setInterval%28self%2C%20aNumber%29%3E'),
419
- messageSends: [],
281
+ selector: "whileFalse",
282
+ category: 'controlling',
283
+ fn: function (){
284
+ var self=this;
285
+ smalltalk.send(self, "_whileFalse_", [(function(){return nil;})]);
286
+ return self;},
287
+ args: [],
288
+ source: "whileFalse\x0a\x09\x22inlined in the Compiler\x22\x0a\x09self whileFalse: []",
289
+ messageSends: ["whileFalse:"],
420
290
  referencedClasses: []
421
291
  }),
422
292
  smalltalk.BlockClosure);
423
293
 
424
294
  smalltalk.addMethod(
425
- unescape('_whileFalse'),
295
+ "_whileFalse_",
426
296
  smalltalk.method({
427
- selector: unescape('whileFalse'),
297
+ selector: "whileFalse:",
428
298
  category: 'controlling',
429
- fn: function () {
430
- var self = this;
431
- smalltalk.send(self, "_whileFalse_", [function () {return nil;}]);
432
- return self;
433
- },
434
- args: [],
435
- source: unescape('whileFalse%0A%09%22inlined%20in%20the%20Compiler%22%0A%09self%20whileFalse%3A%20%5B%5D'),
436
- messageSends: ["whileFalse:"],
299
+ fn: function (aBlock){
300
+ var self=this;
301
+ while(!self()) {aBlock()};
302
+ return self;},
303
+ args: ["aBlock"],
304
+ source: "whileFalse: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<while(!self()) {aBlock()}>",
305
+ messageSends: [],
437
306
  referencedClasses: []
438
307
  }),
439
308
  smalltalk.BlockClosure);
440
309
 
441
310
  smalltalk.addMethod(
442
- unescape('_whileTrue'),
311
+ "_whileTrue",
443
312
  smalltalk.method({
444
- selector: unescape('whileTrue'),
313
+ selector: "whileTrue",
445
314
  category: 'controlling',
446
- fn: function () {
447
- var self = this;
448
- smalltalk.send(self, "_whileTrue_", [function () {return nil;}]);
449
- return self;
450
- },
315
+ fn: function (){
316
+ var self=this;
317
+ smalltalk.send(self, "_whileTrue_", [(function(){return nil;})]);
318
+ return self;},
451
319
  args: [],
452
- source: unescape('whileTrue%0A%09%22inlined%20in%20the%20Compiler%22%0A%09self%20whileTrue%3A%20%5B%5D'),
320
+ source: "whileTrue\x0a\x09\x22inlined in the Compiler\x22\x0a\x09self whileTrue: []",
453
321
  messageSends: ["whileTrue:"],
454
322
  referencedClasses: []
455
323
  }),
456
324
  smalltalk.BlockClosure);
457
325
 
458
326
  smalltalk.addMethod(
459
- unescape('_new'),
327
+ "_whileTrue_",
460
328
  smalltalk.method({
461
- selector: unescape('new'),
462
- category: 'evaluating',
463
- fn: function () {
464
- var self = this;
465
- return new self;
466
- return self;
467
- },
468
- args: [],
469
- source: unescape('new%0A%09%22Use%20the%20receiver%20as%20a%20JS%20constructor.%20%0A%09*Do%20not*%20use%20this%20method%20to%20instanciate%20Smalltalk%20objects%21%22%0A%09%3Creturn%20new%20self%28%29%3E'),
329
+ selector: "whileTrue:",
330
+ category: 'controlling',
331
+ fn: function (aBlock){
332
+ var self=this;
333
+ while(self()) {aBlock()};
334
+ return self;},
335
+ args: ["aBlock"],
336
+ source: "whileTrue: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<while(self()) {aBlock()}>",
470
337
  messageSends: [],
471
338
  referencedClasses: []
472
339
  }),
473
340
  smalltalk.BlockClosure);
474
341
 
342
+
343
+
344
+ smalltalk.addClass('CompiledMethod', smalltalk.Object, [], 'Kernel-Methods');
345
+ smalltalk.CompiledMethod.comment="CompiledMethod hold the source and compiled code of a class method.\x0a\x0aYou can get a CompiledMethod using `Behavior>>methodAt:`\x0a\x0a\x09String methodAt: 'lines'\x0a\x0aand read the source code\x0a\x0a\x09(String methodAt: 'lines') source\x0a\x0aSee referenced classes:\x0a\x0a\x09(String methodAt: 'lines') referencedClasses\x0a\x0aor messages sent from this method:\x0a\x09\x0a\x09(String methodAt: 'lines') messageSends"
475
346
  smalltalk.addMethod(
476
- unescape('_applyTo_arguments_'),
347
+ "_arguments",
477
348
  smalltalk.method({
478
- selector: unescape('applyTo%3Aarguments%3A'),
479
- category: 'evaluating',
480
- fn: function (anObject, aCollection) {
481
- var self = this;
482
- return self.apply(anObject, aCollection);
483
- return self;
484
- },
485
- args: ["anObject", "aCollection"],
486
- source: unescape('applyTo%3A%20anObject%20arguments%3A%20aCollection%0A%09%3Creturn%20self.apply%28anObject%2C%20aCollection%29%3E'),
349
+ selector: "arguments",
350
+ category: 'accessing',
351
+ fn: function (){
352
+ var self=this;
353
+ return self.args || [];
354
+ return self;},
355
+ args: [],
356
+ source: "arguments\x0a\x09<return self.args || []>",
487
357
  messageSends: [],
488
358
  referencedClasses: []
489
359
  }),
490
- smalltalk.BlockClosure);
360
+ smalltalk.CompiledMethod);
491
361
 
492
362
  smalltalk.addMethod(
493
- unescape('_timeToRun'),
363
+ "_category",
494
364
  smalltalk.method({
495
- selector: unescape('timeToRun'),
496
- category: 'evaluating',
497
- fn: function () {
498
- var self = this;
499
- return smalltalk.send(smalltalk.Date || Date, "_millisecondsToRun_", [self]);
500
- return self;
501
- },
365
+ selector: "category",
366
+ category: 'accessing',
367
+ fn: function (){
368
+ var self=this;
369
+ return (($receiver = smalltalk.send(self, "_basicAt_", ["category"])) == nil || $receiver == undefined) ? (function(){return "";})() : $receiver;
370
+ return self;},
502
371
  args: [],
503
- source: unescape('timeToRun%0A%09%22Answer%20the%20number%20of%20milliseconds%20taken%20to%20execute%20this%20block.%22%0A%0A%09%5E%20Date%20millisecondsToRun%3A%20self'),
504
- messageSends: ["millisecondsToRun:"],
505
- referencedClasses: ["Date"]
372
+ source: "category\x0a\x09^(self basicAt: 'category') ifNil: ['']",
373
+ messageSends: ["ifNil:", "basicAt:"],
374
+ referencedClasses: []
506
375
  }),
507
- smalltalk.BlockClosure);
376
+ smalltalk.CompiledMethod);
377
+
378
+ smalltalk.addMethod(
379
+ "_category_",
380
+ smalltalk.method({
381
+ selector: "category:",
382
+ category: 'accessing',
383
+ fn: function (aString){
384
+ var self=this;
385
+ smalltalk.send(self, "_basicAt_put_", ["category", aString]);
386
+ return self;},
387
+ args: ["aString"],
388
+ source: "category: aString\x0a\x09self basicAt: 'category' put: aString",
389
+ messageSends: ["basicAt:put:"],
390
+ referencedClasses: []
391
+ }),
392
+ smalltalk.CompiledMethod);
508
393
 
509
394
  smalltalk.addMethod(
510
- unescape('_numArgs'),
395
+ "_fn",
511
396
  smalltalk.method({
512
- selector: unescape('numArgs'),
397
+ selector: "fn",
513
398
  category: 'accessing',
514
- fn: function () {
515
- var self = this;
516
- return self.length;
517
- return self;
518
- },
399
+ fn: function (){
400
+ var self=this;
401
+ return smalltalk.send(self, "_basicAt_", ["fn"]);
402
+ return self;},
519
403
  args: [],
520
- source: unescape('numArgs%0A%09%3Creturn%20self.length%3E'),
521
- messageSends: [],
404
+ source: "fn\x0a\x09^self basicAt: 'fn'",
405
+ messageSends: ["basicAt:"],
522
406
  referencedClasses: []
523
407
  }),
524
- smalltalk.BlockClosure);
408
+ smalltalk.CompiledMethod);
525
409
 
526
410
  smalltalk.addMethod(
527
- unescape('_ensure_'),
411
+ "_fn_",
528
412
  smalltalk.method({
529
- selector: unescape('ensure%3A'),
530
- category: 'evaluating',
531
- fn: function (aBlock) {
532
- var self = this;
533
- var success = nil;
534
- success = false;
535
- return smalltalk.send(function () {smalltalk.send(self, "_value", []);success = true;return smalltalk.send(aBlock, "_value", []);}, "_on_do_", [smalltalk.Error || Error, function (ex) {($receiver = success).klass === smalltalk.Boolean ? !$receiver ? function () {return smalltalk.send(aBlock, "_value", []);}() : nil : smalltalk.send($receiver, "_ifFalse_", [function () {return smalltalk.send(aBlock, "_value", []);}]);return smalltalk.send(ex, "_signal", []);}]);
536
- return self;
537
- },
413
+ selector: "fn:",
414
+ category: 'accessing',
415
+ fn: function (aBlock){
416
+ var self=this;
417
+ smalltalk.send(self, "_basicAt_put_", ["fn", aBlock]);
418
+ return self;},
538
419
  args: ["aBlock"],
539
- source: unescape('ensure%3A%20aBlock%0A%09%7C%20success%20%7C%0A%09success%20%3A%3D%20false.%0A%09%5E%5Bself%20value.%20success%20%3A%3D%20true.%20aBlock%20value%5D%0A%09%09on%3A%20Error%0A%09%09do%3A%20%5B%3Aex%20%7C%0A%09%09%09success%20ifFalse%3A%20%5BaBlock%20value%5D.%0A%09%09%09ex%20signal%5D'),
540
- messageSends: ["on:do:", "value", "ifFalse:", "signal"],
541
- referencedClasses: ["Error"]
420
+ source: "fn: aBlock\x0a\x09self basicAt: 'fn' put: aBlock",
421
+ messageSends: ["basicAt:put:"],
422
+ referencedClasses: []
542
423
  }),
543
- smalltalk.BlockClosure);
424
+ smalltalk.CompiledMethod);
544
425
 
545
426
  smalltalk.addMethod(
546
- unescape('_newValue_'),
427
+ "_messageSends",
547
428
  smalltalk.method({
548
- selector: unescape('newValue%3A'),
549
- category: 'evaluating',
550
- fn: function (anObject) {
551
- var self = this;
552
- return new self(anObject);
553
- return self;
554
- },
555
- args: ["anObject"],
556
- source: unescape('newValue%3A%20anObject%0A%09%22Use%20the%20receiver%20as%20a%20JS%20constructor.%20%0A%09*Do%20not*%20use%20this%20method%20to%20instanciate%20Smalltalk%20objects%21%22%0A%09%3Creturn%20new%20self%28anObject%29%3E'),
557
- messageSends: [],
429
+ selector: "messageSends",
430
+ category: 'accessing',
431
+ fn: function (){
432
+ var self=this;
433
+ return smalltalk.send(self, "_basicAt_", ["messageSends"]);
434
+ return self;},
435
+ args: [],
436
+ source: "messageSends\x0a\x09^self basicAt: 'messageSends'",
437
+ messageSends: ["basicAt:"],
558
438
  referencedClasses: []
559
439
  }),
560
- smalltalk.BlockClosure);
440
+ smalltalk.CompiledMethod);
561
441
 
562
442
  smalltalk.addMethod(
563
- unescape('_newValue_value_'),
443
+ "_methodClass",
564
444
  smalltalk.method({
565
- selector: unescape('newValue%3Avalue%3A'),
566
- category: 'evaluating',
567
- fn: function (anObject, anObject2) {
568
- var self = this;
569
- return new self(anObject, anObject2);
570
- return self;
571
- },
572
- args: ["anObject", "anObject2"],
573
- source: unescape('newValue%3A%20%20anObject%20value%3A%20anObject2%0A%09%22Use%20the%20receiver%20as%20a%20JS%20constructor.%20%0A%09*Do%20not*%20use%20this%20method%20to%20instanciate%20Smalltalk%20objects%21%22%0A%09%3Creturn%20new%20self%28anObject%2C%20anObject2%29%3E'),
574
- messageSends: [],
445
+ selector: "methodClass",
446
+ category: 'accessing',
447
+ fn: function (){
448
+ var self=this;
449
+ return smalltalk.send(self, "_basicAt_", ["methodClass"]);
450
+ return self;},
451
+ args: [],
452
+ source: "methodClass\x0a\x09^self basicAt: 'methodClass'",
453
+ messageSends: ["basicAt:"],
575
454
  referencedClasses: []
576
455
  }),
577
- smalltalk.BlockClosure);
456
+ smalltalk.CompiledMethod);
578
457
 
579
458
  smalltalk.addMethod(
580
- unescape('_newValue_value_value_'),
459
+ "_referencedClasses",
581
460
  smalltalk.method({
582
- selector: unescape('newValue%3Avalue%3Avalue%3A'),
583
- category: 'evaluating',
584
- fn: function (anObject, anObject2, anObject3) {
585
- var self = this;
586
- return new self(anObject, anObject2);
587
- return self;
588
- },
589
- args: ["anObject", "anObject2", "anObject3"],
590
- source: unescape('newValue%3A%20%20anObject%20value%3A%20anObject2%20value%3A%20anObject3%0A%09%22Use%20the%20receiver%20as%20a%20JS%20constructor.%20%0A%09*Do%20not*%20use%20this%20method%20to%20instanciate%20Smalltalk%20objects%21%22%0A%09%3Creturn%20new%20self%28anObject%2C%20anObject2%29%3E'),
591
- messageSends: [],
461
+ selector: "referencedClasses",
462
+ category: 'accessing',
463
+ fn: function (){
464
+ var self=this;
465
+ return smalltalk.send(self, "_basicAt_", ["referencedClasses"]);
466
+ return self;},
467
+ args: [],
468
+ source: "referencedClasses\x0a\x09^self basicAt: 'referencedClasses'",
469
+ messageSends: ["basicAt:"],
592
470
  referencedClasses: []
593
471
  }),
594
- smalltalk.BlockClosure);
595
-
596
-
472
+ smalltalk.CompiledMethod);
597
473
 
598
- smalltalk.addClass('CompiledMethod', smalltalk.Object, [], 'Kernel-Methods');
599
- smalltalk.CompiledMethod.comment=unescape('CompiledMethod%20hold%20the%20source%20and%20compiled%20code%20of%20a%20class%20method.%0A%0AYou%20can%20get%20a%20CompiledMethod%20using%20%60Behavior%3E%3EmethodAt%3A%60%0A%0A%09String%20methodAt%3A%20%27lines%27%0A%0Aand%20read%20the%20source%20code%0A%0A%09%28String%20methodAt%3A%20%27lines%27%29%20source%0A%0ASee%20referenced%20classes%3A%0A%0A%09%28String%20methodAt%3A%20%27lines%27%29%20referencedClasses%0A%0Aor%20messages%20sent%20from%20this%20method%3A%0A%09%0A%09%28String%20methodAt%3A%20%27lines%27%29%20%20messageSends')
600
474
  smalltalk.addMethod(
601
- unescape('_source'),
475
+ "_selector",
602
476
  smalltalk.method({
603
- selector: unescape('source'),
477
+ selector: "selector",
604
478
  category: 'accessing',
605
- fn: function () {
606
- var self = this;
607
- return ($receiver = smalltalk.send(self, "_basicAt_", ["source"])) == nil ||
608
- $receiver == undefined ? function () {return "";}() : $receiver;
609
- return self;
610
- },
479
+ fn: function (){
480
+ var self=this;
481
+ return smalltalk.send(self, "_basicAt_", ["selector"]);
482
+ return self;},
611
483
  args: [],
612
- source: unescape('source%0A%09%5E%28self%20basicAt%3A%20%27source%27%29%20ifNil%3A%20%5B%27%27%5D'),
613
- messageSends: ["ifNil:", "basicAt:"],
484
+ source: "selector\x0a\x09^self basicAt: 'selector'",
485
+ messageSends: ["basicAt:"],
614
486
  referencedClasses: []
615
487
  }),
616
488
  smalltalk.CompiledMethod);
617
489
 
618
490
  smalltalk.addMethod(
619
- unescape('_source_'),
491
+ "_selector_",
620
492
  smalltalk.method({
621
- selector: unescape('source%3A'),
493
+ selector: "selector:",
622
494
  category: 'accessing',
623
- fn: function (aString) {
624
- var self = this;
625
- smalltalk.send(self, "_basicAt_put_", ["source", aString]);
626
- return self;
627
- },
495
+ fn: function (aString){
496
+ var self=this;
497
+ smalltalk.send(self, "_basicAt_put_", ["selector", aString]);
498
+ return self;},
628
499
  args: ["aString"],
629
- source: unescape('source%3A%20aString%0A%09self%20basicAt%3A%20%27source%27%20put%3A%20aString'),
500
+ source: "selector: aString\x0a\x09self basicAt: 'selector' put: aString",
630
501
  messageSends: ["basicAt:put:"],
631
502
  referencedClasses: []
632
503
  }),
633
504
  smalltalk.CompiledMethod);
634
505
 
635
506
  smalltalk.addMethod(
636
- unescape('_category'),
507
+ "_source",
637
508
  smalltalk.method({
638
- selector: unescape('category'),
509
+ selector: "source",
639
510
  category: 'accessing',
640
- fn: function () {
641
- var self = this;
642
- return ($receiver = smalltalk.send(self, "_basicAt_", ["category"])) == nil ||
643
- $receiver == undefined ? function () {return "";}() : $receiver;
644
- return self;
645
- },
511
+ fn: function (){
512
+ var self=this;
513
+ return (($receiver = smalltalk.send(self, "_basicAt_", ["source"])) == nil || $receiver == undefined) ? (function(){return "";})() : $receiver;
514
+ return self;},
646
515
  args: [],
647
- source: unescape('category%0A%09%5E%28self%20basicAt%3A%20%27category%27%29%20ifNil%3A%20%5B%27%27%5D'),
516
+ source: "source\x0a\x09^(self basicAt: 'source') ifNil: ['']",
648
517
  messageSends: ["ifNil:", "basicAt:"],
649
518
  referencedClasses: []
650
519
  }),
651
520
  smalltalk.CompiledMethod);
652
521
 
653
522
  smalltalk.addMethod(
654
- unescape('_category_'),
523
+ "_source_",
655
524
  smalltalk.method({
656
- selector: unescape('category%3A'),
525
+ selector: "source:",
657
526
  category: 'accessing',
658
- fn: function (aString) {
659
- var self = this;
660
- smalltalk.send(self, "_basicAt_put_", ["category", aString]);
661
- return self;
662
- },
527
+ fn: function (aString){
528
+ var self=this;
529
+ smalltalk.send(self, "_basicAt_put_", ["source", aString]);
530
+ return self;},
663
531
  args: ["aString"],
664
- source: unescape('category%3A%20aString%0A%09self%20basicAt%3A%20%27category%27%20put%3A%20aString'),
532
+ source: "source: aString\x0a\x09self basicAt: 'source' put: aString",
665
533
  messageSends: ["basicAt:put:"],
666
534
  referencedClasses: []
667
535
  }),
668
536
  smalltalk.CompiledMethod);
669
537
 
538
+
539
+
540
+ smalltalk.addClass('Message', smalltalk.Object, ['selector', 'arguments'], 'Kernel-Methods');
541
+ smalltalk.Message.comment="Generally, the system does not use instances of Message for efficiency reasons.\x0aHowever, when a message is not understood by its receiver, the interpreter will make up an instance of it in order to capture the information involved in an actual message transmission. \x0aThis instance is sent it as an argument with the message `doesNotUnderstand:` to the receiver.\x0a\x0aSee boot.js, `messageNotUnderstood` and its counterpart `Object>>doesNotUnderstand:`"
670
542
  smalltalk.addMethod(
671
- unescape('_selector'),
543
+ "_arguments",
672
544
  smalltalk.method({
673
- selector: unescape('selector'),
545
+ selector: "arguments",
674
546
  category: 'accessing',
675
- fn: function () {
676
- var self = this;
677
- return smalltalk.send(self, "_basicAt_", ["selector"]);
678
- return self;
679
- },
547
+ fn: function (){
548
+ var self=this;
549
+ return self['@arguments'];
550
+ return self;},
680
551
  args: [],
681
- source: unescape('selector%0A%09%5Eself%20basicAt%3A%20%27selector%27'),
682
- messageSends: ["basicAt:"],
552
+ source: "arguments\x0a\x09^arguments",
553
+ messageSends: [],
683
554
  referencedClasses: []
684
555
  }),
685
- smalltalk.CompiledMethod);
556
+ smalltalk.Message);
686
557
 
687
558
  smalltalk.addMethod(
688
- unescape('_selector_'),
559
+ "_arguments_",
689
560
  smalltalk.method({
690
- selector: unescape('selector%3A'),
561
+ selector: "arguments:",
691
562
  category: 'accessing',
692
- fn: function (aString) {
693
- var self = this;
694
- smalltalk.send(self, "_basicAt_put_", ["selector", aString]);
695
- return self;
696
- },
563
+ fn: function (anArray){
564
+ var self=this;
565
+ (self['@arguments']=anArray);
566
+ return self;},
567
+ args: ["anArray"],
568
+ source: "arguments: anArray\x0a\x09arguments := anArray",
569
+ messageSends: [],
570
+ referencedClasses: []
571
+ }),
572
+ smalltalk.Message);
573
+
574
+ smalltalk.addMethod(
575
+ "_printString",
576
+ smalltalk.method({
577
+ selector: "printString",
578
+ category: 'printing',
579
+ fn: function (){
580
+ var self=this;
581
+ return smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(aStream){return (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(self, "_printString", [], smalltalk.Message.superclass || nil)]);smalltalk.send($rec, "_nextPutAll_", ["("]);smalltalk.send($rec, "_nextPutAll_", [self['@selector']]);return smalltalk.send($rec, "_nextPutAll_", [")"]);})(aStream);})]);
582
+ return self;},
583
+ args: [],
584
+ source: "printString\x0a\x09^ String streamContents: [:aStream| \x0a \x09\x09\x09\x09aStream \x0a \x09\x09\x09\x09\x09nextPutAll: super printString;\x0a \x09\x09\x09\x09\x09nextPutAll: '(';\x0a \x09\x09\x09\x09\x09nextPutAll: selector;\x0a \x09\x09\x09\x09\x09nextPutAll: ')' \x09\x09\x09\x09]",
585
+ messageSends: ["streamContents:", "nextPutAll:", "printString"],
586
+ referencedClasses: ["String"]
587
+ }),
588
+ smalltalk.Message);
589
+
590
+ smalltalk.addMethod(
591
+ "_selector",
592
+ smalltalk.method({
593
+ selector: "selector",
594
+ category: 'accessing',
595
+ fn: function (){
596
+ var self=this;
597
+ return self['@selector'];
598
+ return self;},
599
+ args: [],
600
+ source: "selector\x0a\x09^selector",
601
+ messageSends: [],
602
+ referencedClasses: []
603
+ }),
604
+ smalltalk.Message);
605
+
606
+ smalltalk.addMethod(
607
+ "_selector_",
608
+ smalltalk.method({
609
+ selector: "selector:",
610
+ category: 'accessing',
611
+ fn: function (aString){
612
+ var self=this;
613
+ (self['@selector']=aString);
614
+ return self;},
697
615
  args: ["aString"],
698
- source: unescape('selector%3A%20aString%0A%09self%20basicAt%3A%20%27selector%27%20put%3A%20aString'),
699
- messageSends: ["basicAt:put:"],
616
+ source: "selector: aString\x0a\x09selector := aString",
617
+ messageSends: [],
700
618
  referencedClasses: []
701
619
  }),
702
- smalltalk.CompiledMethod);
620
+ smalltalk.Message);
703
621
 
704
622
  smalltalk.addMethod(
705
- unescape('_fn'),
623
+ "_sendTo_",
706
624
  smalltalk.method({
707
- selector: unescape('fn'),
625
+ selector: "sendTo:",
626
+ category: 'printing',
627
+ fn: function (anObject){
628
+ var self=this;
629
+ smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_send_to_arguments_", [smalltalk.send(self, "_selector", []), anObject, smalltalk.send(self, "_arguments", [])]);
630
+ return self;},
631
+ args: ["anObject"],
632
+ source: "sendTo: anObject\x0a\x09Smalltalk current send: self selector to: anObject arguments: self arguments",
633
+ messageSends: ["send:to:arguments:", "current", "selector", "arguments"],
634
+ referencedClasses: ["Smalltalk"]
635
+ }),
636
+ smalltalk.Message);
637
+
638
+
639
+ smalltalk.addMethod(
640
+ "_selector_arguments_",
641
+ smalltalk.method({
642
+ selector: "selector:arguments:",
643
+ category: 'instance creation',
644
+ fn: function (aString, anArray){
645
+ var self=this;
646
+ return (function($rec){smalltalk.send($rec, "_selector_", [aString]);smalltalk.send($rec, "_arguments_", [anArray]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", []));
647
+ return self;},
648
+ args: ["aString", "anArray"],
649
+ source: "selector: aString arguments: anArray\x0a\x09^self new\x0a\x09\x09selector: aString;\x0a\x09\x09arguments: anArray;\x0a\x09\x09yourself",
650
+ messageSends: ["selector:", "arguments:", "yourself", "new"],
651
+ referencedClasses: []
652
+ }),
653
+ smalltalk.Message.klass);
654
+
655
+
656
+ smalltalk.addClass('MethodContext', smalltalk.Object, [], 'Kernel-Methods');
657
+ smalltalk.MethodContext.comment="MethodContext holds all the dynamic state associated with the execution of either a method activation resulting from a message send. That is used to build the call stack while debugging.\x0a \x0aMethodContext instances are JavaScript `SmalltalkMethodContext` objects defined in boot.js \x0a\x0aCurrent limitation: MethodContext instances are not created on Block evaluation. That means it's actually impossible to debug inside a Block."
658
+ smalltalk.addMethod(
659
+ "_asString",
660
+ smalltalk.method({
661
+ selector: "asString",
708
662
  category: 'accessing',
709
- fn: function () {
710
- var self = this;
711
- return smalltalk.send(self, "_basicAt_", ["fn"]);
712
- return self;
713
- },
663
+ fn: function (){
664
+ var self=this;
665
+ return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_receiver", []), "_class", []), "_printString", []), "__comma", [" >> "]), "__comma", [smalltalk.send(self, "_selector", [])]);
666
+ return self;},
714
667
  args: [],
715
- source: unescape('fn%0A%09%5Eself%20basicAt%3A%20%27fn%27'),
716
- messageSends: ["basicAt:"],
668
+ source: "asString\x0a\x09^self receiver class printString, ' >> ', self selector",
669
+ messageSends: [",", "printString", "class", "receiver", "selector"],
717
670
  referencedClasses: []
718
671
  }),
719
- smalltalk.CompiledMethod);
672
+ smalltalk.MethodContext);
720
673
 
721
674
  smalltalk.addMethod(
722
- unescape('_fn_'),
675
+ "_home",
723
676
  smalltalk.method({
724
- selector: unescape('fn%3A'),
677
+ selector: "home",
725
678
  category: 'accessing',
726
- fn: function (aBlock) {
727
- var self = this;
728
- smalltalk.send(self, "_basicAt_put_", ["fn", aBlock]);
729
- return self;
730
- },
731
- args: ["aBlock"],
732
- source: unescape('fn%3A%20aBlock%0A%09self%20basicAt%3A%20%27fn%27%20put%3A%20aBlock'),
733
- messageSends: ["basicAt:put:"],
679
+ fn: function (){
680
+ var self=this;
681
+ return self.homeContext;
682
+ return self;},
683
+ args: [],
684
+ source: "home\x0a\x09<return self.homeContext>",
685
+ messageSends: [],
734
686
  referencedClasses: []
735
687
  }),
736
- smalltalk.CompiledMethod);
688
+ smalltalk.MethodContext);
737
689
 
738
690
  smalltalk.addMethod(
739
- unescape('_messageSends'),
691
+ "_printString",
740
692
  smalltalk.method({
741
- selector: unescape('messageSends'),
693
+ selector: "printString",
742
694
  category: 'accessing',
743
- fn: function () {
744
- var self = this;
745
- return smalltalk.send(self, "_basicAt_", ["messageSends"]);
746
- return self;
747
- },
695
+ fn: function (){
696
+ var self=this;
697
+ return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_printString", [], smalltalk.MethodContext.superclass || nil), "__comma", ["("]), "__comma", [smalltalk.send(self, "_asString", [])]), "__comma", [")"]);
698
+ return self;},
748
699
  args: [],
749
- source: unescape('messageSends%0A%09%5Eself%20basicAt%3A%20%27messageSends%27'),
750
- messageSends: ["basicAt:"],
700
+ source: "printString\x0a\x09^super printString, '(', self asString, ')'",
701
+ messageSends: [",", "printString", "asString"],
751
702
  referencedClasses: []
752
703
  }),
753
- smalltalk.CompiledMethod);
704
+ smalltalk.MethodContext);
754
705
 
755
706
  smalltalk.addMethod(
756
- unescape('_methodClass'),
707
+ "_receiver",
757
708
  smalltalk.method({
758
- selector: unescape('methodClass'),
709
+ selector: "receiver",
759
710
  category: 'accessing',
760
- fn: function () {
761
- var self = this;
762
- return smalltalk.send(self, "_basicAt_", ["methodClass"]);
763
- return self;
764
- },
711
+ fn: function (){
712
+ var self=this;
713
+ return self.receiver;
714
+ return self;},
765
715
  args: [],
766
- source: unescape('methodClass%0A%09%5Eself%20basicAt%3A%20%27methodClass%27'),
767
- messageSends: ["basicAt:"],
716
+ source: "receiver\x0a\x09<return self.receiver>",
717
+ messageSends: [],
768
718
  referencedClasses: []
769
719
  }),
770
- smalltalk.CompiledMethod);
720
+ smalltalk.MethodContext);
771
721
 
772
722
  smalltalk.addMethod(
773
- unescape('_referencedClasses'),
723
+ "_selector",
774
724
  smalltalk.method({
775
- selector: unescape('referencedClasses'),
725
+ selector: "selector",
776
726
  category: 'accessing',
777
- fn: function () {
778
- var self = this;
779
- return smalltalk.send(self, "_basicAt_", ["referencedClasses"]);
780
- return self;
781
- },
727
+ fn: function (){
728
+ var self=this;
729
+ return smalltalk.convertSelector(self.selector);
730
+ return self;},
782
731
  args: [],
783
- source: unescape('referencedClasses%0A%09%5Eself%20basicAt%3A%20%27referencedClasses%27'),
784
- messageSends: ["basicAt:"],
732
+ source: "selector\x0a\x09<return smalltalk.convertSelector(self.selector)>",
733
+ messageSends: [],
785
734
  referencedClasses: []
786
735
  }),
787
- smalltalk.CompiledMethod);
736
+ smalltalk.MethodContext);
788
737
 
789
738
  smalltalk.addMethod(
790
- unescape('_arguments'),
739
+ "_temps",
791
740
  smalltalk.method({
792
- selector: unescape('arguments'),
741
+ selector: "temps",
793
742
  category: 'accessing',
794
- fn: function () {
795
- var self = this;
796
- return self.args || [];
797
- return self;
798
- },
743
+ fn: function (){
744
+ var self=this;
745
+ return self.temps;
746
+ return self;},
799
747
  args: [],
800
- source: unescape('arguments%0A%09%3Creturn%20self.args%20%7C%7C%20%5B%5D%3E'),
748
+ source: "temps\x0a\x09<return self.temps>",
801
749
  messageSends: [],
802
750
  referencedClasses: []
803
751
  }),
804
- smalltalk.CompiledMethod);
752
+ smalltalk.MethodContext);
805
753
 
806
754
 
807
755