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
@@ -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
+