resin 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,471 @@
1
+ Smalltalk current createPackage: 'Compiler-Tests' properties: #{}!
2
+ TestCase subclass: #ImporterTest
3
+ instanceVariableNames: ''
4
+ category: 'Compiler-Tests'!
5
+
6
+ !ImporterTest methodsFor: 'private'!
7
+
8
+ chunkString
9
+
10
+ ^'!!Object methodsFor: ''importer test method''!!
11
+
12
+ importerTestMethod
13
+
14
+ ^''success''
15
+ !! !!
16
+ '
17
+ !
18
+
19
+ bigChunkString
20
+
21
+ ^'Smalltalk current createPackage: ''Cypress-Definitions'' properties: #{}!!
22
+ Object subclass: #CypressSnapshot
23
+ instanceVariableNames: ''definitions''
24
+ package: ''Cypress-Definitions''!!
25
+
26
+ !!CypressSnapshot methodsFor: ''not yet classified''!!
27
+
28
+ definitions: aDefinitions
29
+
30
+ definitions := aDefinitions
31
+ !!
32
+
33
+ definitions
34
+
35
+ ^definitions
36
+ !! !!
37
+
38
+ !!CypressSnapshot class methodsFor: ''not yet classified''!!
39
+
40
+ definitions: aDefinitions
41
+
42
+ ^(self new) definitions: aDefinitions
43
+ !! !!
44
+
45
+ Object subclass: #CypressPackage
46
+ instanceVariableNames: ''name''
47
+ package: ''Cypress-Definitions''!!
48
+
49
+ !!CypressPackage methodsFor: ''not yet classified''!!
50
+
51
+ = other
52
+ ^ other species = self species and: [other name sameAs: name]
53
+ !!
54
+
55
+ name
56
+ ^ name
57
+ !!
58
+
59
+ name: aString
60
+ name := aString
61
+ !!
62
+
63
+ snapshot
64
+ | package definitions name |
65
+ package := Package named: self name.
66
+ definitions := OrderedCollection new.
67
+ package sortedClasses do: [:cls |
68
+ definitions add: cls asCypressClassDefinition.
69
+ cls methodDictionary values do: [:method |
70
+ (method category match: ''^\*'') ifFalse: [
71
+ definitions add: method asCypressMethodDefinition ]].
72
+ cls class methodDictionary values do: [:method |
73
+ (method category match: ''^\*'') ifFalse: [
74
+ definitions add: method asCypressMethodDefinition ]]].
75
+ name := package name.
76
+ Smalltalk current classes, (Smalltalk current classes collect: [:each | each class]) do: [:each |
77
+ each methodDictionary values do: [:method |
78
+ method category = (''*'', name) ifTrue: [
79
+ definitions add: method asCypressMethodDefinition ]]].
80
+ ^ CypressSnapshot definitions: definitions
81
+ !!
82
+
83
+ printString
84
+ ^super printString, ''('', name, '')''
85
+ !! !!
86
+
87
+ Object subclass: #CypressDefinition
88
+ instanceVariableNames: ''''
89
+ package: ''Cypress-Definitions''!!
90
+
91
+ !!CypressDefinition methodsFor: ''not yet classified''!!
92
+
93
+ = aDefinition
94
+ ^(aDefinition isKindOf: CypressDefinition) and: [self isRevisionOf: aDefinition]
95
+ !!
96
+
97
+ isRevisionOf: aDefinition
98
+ ^ (aDefinition isKindOf: CypressDefinition) and: [aDefinition description = self description]
99
+ !!
100
+
101
+ description
102
+ self subclassResponsibility
103
+ !!
104
+
105
+ isSameRevisionAs: aDefinition
106
+ ^ self = aDefinition
107
+ !! !!
108
+
109
+ Object subclass: #CypressPatch
110
+ instanceVariableNames: ''operations''
111
+ package: ''Cypress-Definitions''!!
112
+
113
+ !!CypressPatch methodsFor: ''not yet classified''!!
114
+
115
+ fromBase: baseSnapshot toTarget: targetSnapshot
116
+ | base target |
117
+ operations := OrderedCollection new.
118
+ base := CypressDefinitionIndex definitions: baseSnapshot definitions.
119
+ target := CypressDefinitionIndex definitions: targetSnapshot definitions.
120
+
121
+ target definitions do:
122
+ [:t |
123
+ base
124
+ definitionLike: t
125
+ ifPresent: [:b | (b isSameRevisionAs: t) ifFalse: [operations add: (CypressModification of: b to: t)]]
126
+ ifAbsent: [operations add: (CypressAddition of: t)]].
127
+
128
+ base definitions do:
129
+ [:b |
130
+ target
131
+ definitionLike: b
132
+ ifPresent: [:t | ]
133
+ ifAbsent: [operations add: (CypressRemoval of: b)]]
134
+ !!
135
+
136
+ operations
137
+
138
+ ^operations
139
+ !! !!
140
+
141
+ !!CypressPatch class methodsFor: ''not yet classified''!!
142
+
143
+ fromBase: baseSnapshot toTarget: targetSnapshot
144
+ ^ (self new)
145
+ fromBase: baseSnapshot
146
+ toTarget: targetSnapshot
147
+ !! !!
148
+
149
+ Object subclass: #CypressDefinitionIndex
150
+ instanceVariableNames: ''definitionMap''
151
+ package: ''Cypress-Definitions''!!
152
+
153
+ !!CypressDefinitionIndex methodsFor: ''not yet classified''!!
154
+
155
+ add: aDefinition
156
+ ^ self definitionMap at: aDefinition description put: aDefinition
157
+ !!
158
+
159
+ addAll: aCollection
160
+ aCollection do: [:ea | self add: ea]
161
+ !!
162
+
163
+ definitionLike: aDefinition ifPresent: foundBlock ifAbsent: errorBlock
164
+ | definition |
165
+ definition := self definitionMap at: aDefinition description ifAbsent: [].
166
+ ^ definition
167
+ ifNil: errorBlock
168
+ ifNotNil: [foundBlock value: definition]
169
+ !!
170
+
171
+ definitions
172
+ ^self definitionMap values
173
+ !!
174
+
175
+ definitionMap
176
+ definitionMap ifNil: [ definitionMap := Dictionary new ].
177
+ ^ definitionMap
178
+ !!
179
+
180
+ remove: aDefinition
181
+ self definitionMap removeKey: aDefinition description ifAbsent: []
182
+ !! !!
183
+
184
+ !!CypressDefinitionIndex class methodsFor: ''not yet classified''!!
185
+
186
+ definitions: aCollection
187
+ ^ self new addAll: aCollection
188
+ !! !!
189
+
190
+ Object subclass: #CypressPatchOperation
191
+ instanceVariableNames: ''''
192
+ package: ''Cypress-Definitions''!!
193
+
194
+ CypressDefinition subclass: #CypressClassDefinition
195
+ instanceVariableNames: ''name superclassName category comment instVarNames classInstVarNames''
196
+ package: ''Cypress-Definitions''!!
197
+
198
+ !!CypressClassDefinition methodsFor: ''not yet classified''!!
199
+
200
+ name: aClassName superclassName: aSuperclassName category: aCategory instVarNames: anInstanceVariableNames classInstVarNames: aClassInstanceVariableNames comment: aComment
201
+
202
+ name := aClassName.
203
+ superclassName := aSuperclassName.
204
+ category := aCategory.
205
+ instVarNames := anInstanceVariableNames.
206
+ classInstVarNames := aClassInstanceVariableNames.
207
+ comment := aComment
208
+ !!
209
+
210
+ = aDefinition
211
+ ^(super = aDefinition)
212
+ and: [superclassName = aDefinition superclassName
213
+ and: [category = aDefinition category
214
+ and: [instVarNames = aDefinition instVarNames
215
+ and: [classInstVarNames = aDefinition classInstVarNames
216
+ and: [comment = aDefinition comment]]]]]
217
+ !!
218
+
219
+ superclassName
220
+
221
+ ^superclassName
222
+ !!
223
+
224
+ name
225
+
226
+ ^name
227
+ !!
228
+
229
+ category
230
+
231
+ ^category
232
+ !!
233
+
234
+ comment
235
+
236
+ ^comment
237
+ !!
238
+
239
+ description
240
+
241
+ ^ Array with: name
242
+ !!
243
+
244
+ instVarNames
245
+
246
+ ^instVarNames
247
+ !!
248
+
249
+ classInstVarNames
250
+
251
+ ^classInstVarNames
252
+ !! !!
253
+
254
+ !!CypressClassDefinition class methodsFor: ''not yet classified''!!
255
+
256
+ name: aClassName
257
+ superclassName: aSuperclassName
258
+ category: aCategory
259
+ instVarNames: anInstanceVariableNames
260
+ classInstVarNames: aClassInstanceVariableNames
261
+ comment: aComment
262
+
263
+ ^(self new)
264
+ name: aClassName
265
+ superclassName: aSuperclassName
266
+ category: aCategory
267
+ instVarNames: anInstanceVariableNames
268
+ classInstVarNames: aClassInstanceVariableNames
269
+ comment: aComment
270
+ !! !!
271
+
272
+ CypressDefinition subclass: #CypressMethodDefinition
273
+ instanceVariableNames: ''classIsMeta source category selector className''
274
+ package: ''Cypress-Definitions''!!
275
+
276
+ !!CypressMethodDefinition methodsFor: ''not yet classified''!!
277
+
278
+ className: aName classIsMeta: isMetaclass selector: aSelector category: aCategory source: aSource
279
+
280
+ className := aName.
281
+ classIsMeta := isMetaclass.
282
+ selector := aSelector.
283
+ category := aCategory.
284
+ source := aSource.
285
+ !!
286
+
287
+ = aDefinition
288
+ ^ super = aDefinition
289
+ and: [ aDefinition source = self source
290
+ and: [ aDefinition category = self category ] ]
291
+ !!
292
+
293
+ source
294
+
295
+ ^source
296
+ !!
297
+
298
+ category
299
+
300
+ ^category
301
+ !!
302
+
303
+ description
304
+ ^ Array
305
+ with: className
306
+ with: selector
307
+ with: classIsMeta
308
+ !! !!
309
+
310
+ !!CypressMethodDefinition class methodsFor: ''not yet classified''!!
311
+
312
+ className: aName
313
+ classIsMeta: isMetaclass
314
+ selector: aSelector
315
+ category: aCategory
316
+ source: aSource
317
+
318
+ ^(self new)
319
+ className: aName
320
+ classIsMeta: isMetaclass
321
+ selector: aSelector
322
+ category: aCategory
323
+ source: aSource
324
+ !! !!
325
+
326
+ CypressPatchOperation subclass: #CypressAddition
327
+ instanceVariableNames: ''definition''
328
+ package: ''Cypress-Definitions''!!
329
+
330
+ !!CypressAddition methodsFor: ''not yet classified''!!
331
+
332
+ definition: aDefinition
333
+
334
+ definition := aDefinition
335
+ !! !!
336
+
337
+ !!CypressAddition class methodsFor: ''not yet classified''!!
338
+
339
+ of: aDefinition
340
+ ^ self new definition: aDefinition
341
+ !! !!
342
+
343
+ CypressPatchOperation subclass: #CypressModification
344
+ instanceVariableNames: ''obsoletion modification''
345
+ package: ''Cypress-Definitions''!!
346
+
347
+ !!CypressModification methodsFor: ''not yet classified''!!
348
+
349
+ base: base target: target
350
+
351
+ obsoletion := base.
352
+ modification := target.
353
+ !! !!
354
+
355
+ !!CypressModification class methodsFor: ''not yet classified''!!
356
+
357
+ of: base to: target
358
+ ^ self new base: base target: target
359
+ !! !!
360
+
361
+ CypressPatchOperation subclass: #CypressRemoval
362
+ instanceVariableNames: ''definition''
363
+ package: ''Cypress-Definitions''!!
364
+
365
+ !!CypressRemoval methodsFor: ''not yet classified''!!
366
+
367
+ definition: aDefinition
368
+
369
+ definition := aDefinition
370
+ !! !!
371
+
372
+ !!CypressRemoval class methodsFor: ''not yet classified''!!
373
+
374
+ of: aDefinition
375
+ ^ self new definition: aDefinition
376
+ !! !!
377
+
378
+ !!Object methodsFor: ''*Cypress-Definitions''!!
379
+
380
+ species
381
+
382
+ ^self class
383
+ !! !!
384
+
385
+ !!Class methodsFor: ''*Cypress-Definitions''!!
386
+
387
+ asCypressClassDefinition
388
+ ^CypressClassDefinition
389
+ name: self name
390
+ superclassName: self superclass name
391
+ category: self category
392
+ instVarNames: self instanceVariableNames
393
+ classInstVarNames: self class instanceVariableNames
394
+ comment: self comment
395
+ !! !!
396
+
397
+ !!CompiledMethod methodsFor: ''*Cypress-Definitions''!!
398
+
399
+ asCypressMethodDefinition
400
+
401
+ ^CypressMethodDefinition
402
+ className: self methodClass name
403
+ classIsMeta: self methodClass isMetaclass
404
+ selector: self selector
405
+ category: self category
406
+ source: self source
407
+ !! !!
408
+
409
+ !!CharacterArray methodsFor: ''*Cypress-Definitions''!!
410
+
411
+ sameAs: aString
412
+
413
+ ^self asUppercase = aString asUppercase
414
+ !! !!
415
+
416
+ '
417
+ ! !
418
+
419
+ !ImporterTest methodsFor: 'running'!
420
+
421
+ setUp
422
+
423
+ super setUp.
424
+ self cleanUp
425
+ !
426
+
427
+ tearDown
428
+
429
+ super tearDown.
430
+ self cleanUp
431
+ !
432
+
433
+ cleanUp
434
+
435
+ (Object methodDictionary includesKey: #importerTestMethod)
436
+ ifTrue: [ Object removeCompiledMethod: (Object methodAt: #importerTestMethod)].
437
+ ! !
438
+
439
+ !ImporterTest methodsFor: 'tests'!
440
+
441
+ testBigChunkString
442
+ "importer does not correctly add extension methods.
443
+
444
+ After loading in AmberProjectImporter, the following import fails...get a MNU from `CypressPackage new species`:
445
+
446
+ AmberProjectImporter
447
+ importSTPackage: 'Cypress-Definitions'
448
+ prefix: 'tests/'.
449
+
450
+ CypressPackage new species.
451
+
452
+ WARNING this guy isn't cleaned up automatically"
453
+
454
+ Importer new import: self bigChunkString readStream.
455
+ CypressPackage new species.
456
+ !
457
+
458
+ testChunkString
459
+
460
+ Importer new import: self chunkString readStream.
461
+ self assert: (Object methodDictionary includesKey: 'importerTestMethod').
462
+ self assert: (Object new importerTestMethod = 'success').
463
+ ! !
464
+
465
+ !Object methodsFor: '*Compiler-Tests'!
466
+
467
+ importerLoadMethod
468
+
469
+ ^'success'
470
+ ! !
471
+