resin 0.2.2 → 0.2.3

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 (117) hide show
  1. data/amber/css/amber-normalize.css +73 -73
  2. data/amber/css/amber-normalize.less +1 -1
  3. data/amber/css/amber.css +106 -106
  4. data/amber/css/helios.css +242 -0
  5. data/amber/images/hsplitter.png +0 -0
  6. data/amber/images/vsplitter.png +0 -0
  7. data/amber/js/Benchfib.deploy.js +116 -38
  8. data/amber/js/Benchfib.js +120 -42
  9. data/amber/js/Canvas.deploy.js +674 -403
  10. data/amber/js/Canvas.js +682 -411
  11. data/amber/js/Compiler-AST.deploy.js +1150 -0
  12. data/amber/js/Compiler-AST.js +1591 -0
  13. data/amber/js/Compiler-Core.deploy.js +1562 -0
  14. data/amber/js/Compiler-Core.js +1972 -0
  15. data/amber/js/Compiler-Exceptions.deploy.js +114 -0
  16. data/amber/js/Compiler-Exceptions.js +161 -0
  17. data/amber/js/Compiler-IR.deploy.js +2326 -0
  18. data/amber/js/Compiler-IR.js +3146 -0
  19. data/amber/js/Compiler-Inlining.deploy.js +1147 -0
  20. data/amber/js/Compiler-Inlining.js +1514 -0
  21. data/amber/js/Compiler-Semantic.deploy.js +1207 -0
  22. data/amber/js/Compiler-Semantic.js +1628 -0
  23. data/amber/js/Compiler-Tests.deploy.js +646 -60
  24. data/amber/js/Compiler-Tests.js +843 -82
  25. data/amber/js/Compiler.deploy.js +1097 -159
  26. data/amber/js/Compiler.js +1414 -161
  27. data/amber/js/Examples.deploy.js +31 -15
  28. data/amber/js/Examples.js +33 -17
  29. data/amber/js/Helios-Announcements.deploy.js +127 -0
  30. data/amber/js/Helios-Announcements.js +157 -0
  31. data/amber/js/Helios-Browser.deploy.js +1473 -0
  32. data/amber/js/Helios-Browser.js +1953 -0
  33. data/amber/js/Helios-Commands.deploy.js +403 -0
  34. data/amber/js/Helios-Commands.js +563 -0
  35. data/amber/js/Helios-Core.deploy.js +1070 -0
  36. data/amber/js/Helios-Core.js +1445 -0
  37. data/amber/js/Helios-Environments.deploy.js +132 -0
  38. data/amber/js/Helios-Environments.js +179 -0
  39. data/amber/js/Helios-Inspector.deploy.js +855 -0
  40. data/amber/js/Helios-Inspector.js +1155 -0
  41. data/amber/js/Helios-KeyBindings.deploy.js +753 -0
  42. data/amber/js/Helios-KeyBindings.js +1023 -0
  43. data/amber/js/Helios-Layout.deploy.js +383 -0
  44. data/amber/js/Helios-Layout.js +523 -0
  45. data/amber/js/Helios-Workspace.deploy.js +799 -0
  46. data/amber/js/Helios-Workspace.js +1074 -0
  47. data/amber/js/IDE.deploy.js +2541 -1490
  48. data/amber/js/IDE.js +2721 -1660
  49. data/amber/js/Importer-Exporter.deploy.js +671 -0
  50. data/amber/js/Importer-Exporter.js +816 -0
  51. data/amber/js/Kernel-Announcements.deploy.js +137 -20
  52. data/amber/js/Kernel-Announcements.js +176 -22
  53. data/amber/js/Kernel-Classes.deploy.js +555 -168
  54. data/amber/js/Kernel-Classes.js +662 -205
  55. data/amber/js/Kernel-Collections.deploy.js +1403 -618
  56. data/amber/js/Kernel-Collections.js +1545 -690
  57. data/amber/js/Kernel-Exceptions.deploy.js +109 -45
  58. data/amber/js/Kernel-Exceptions.js +123 -49
  59. data/amber/js/Kernel-Methods.deploy.js +196 -81
  60. data/amber/js/Kernel-Methods.js +214 -89
  61. data/amber/js/Kernel-Objects.deploy.js +1542 -1117
  62. data/amber/js/Kernel-Objects.js +1593 -1148
  63. data/amber/js/Kernel-Tests.deploy.js +1725 -772
  64. data/amber/js/Kernel-Tests.js +2301 -1123
  65. data/amber/js/Kernel-Transcript.deploy.js +23 -25
  66. data/amber/js/Kernel-Transcript.js +24 -26
  67. data/amber/js/SUnit.deploy.js +204 -131
  68. data/amber/js/SUnit.js +222 -139
  69. data/amber/js/Spaces.deploy.js +240 -0
  70. data/amber/js/Spaces.js +326 -0
  71. data/amber/js/amber.js +26 -7
  72. data/amber/js/boot.js +65 -47
  73. data/amber/js/init.js +1 -1
  74. data/amber/js/lib/CodeMirror/amber.css +21 -21
  75. data/amber/js/lib/CodeMirror/codemirror.css +119 -13
  76. data/amber/js/lib/CodeMirror/codemirror.js +2219 -1220
  77. data/amber/js/lib/CodeMirror/smalltalk.js +134 -129
  78. data/amber/js/lib/bootstrap/css/bootstrap.css +5837 -0
  79. data/amber/js/lib/bootstrap/css/bootstrap.min.css +841 -0
  80. data/amber/js/lib/bootstrap/img/glyphicons-halflings-white.png +0 -0
  81. data/amber/js/lib/bootstrap/img/glyphicons-halflings.png +0 -0
  82. data/amber/js/lib/bootstrap/js/bootstrap.js +2038 -0
  83. data/amber/js/lib/bootstrap/js/bootstrap.min.js +7 -0
  84. data/amber/js/lib/jQuery/jquery-1.8.2.min.js +2 -0
  85. data/amber/js/lib/jQuery/jquery-ui-1.8.24.custom.min.js +125 -0
  86. data/amber/st/Compiler-AST.st +505 -0
  87. data/amber/st/Compiler-Core.st +835 -0
  88. data/amber/st/Compiler-Exceptions.st +87 -0
  89. data/amber/st/Compiler-IR.st +1097 -0
  90. data/amber/st/Compiler-Inlining.st +650 -0
  91. data/amber/st/Compiler-Semantic.st +558 -0
  92. data/amber/st/Compiler-Tests.st +285 -381
  93. data/amber/st/Compiler.st +725 -2
  94. data/amber/st/Helios-Announcements.st +104 -0
  95. data/amber/st/Helios-Browser.st +708 -0
  96. data/amber/st/Helios-Commands.st +223 -0
  97. data/amber/st/Helios-Core.st +532 -0
  98. data/amber/st/Helios-Environments.st +98 -0
  99. data/amber/st/Helios-Inspector.st +367 -0
  100. data/amber/st/Helios-KeyBindings.st +337 -0
  101. data/amber/st/Helios-Layout.st +199 -0
  102. data/amber/st/Helios-Workspace.st +367 -0
  103. data/amber/st/IDE.st +75 -53
  104. data/amber/st/Importer-Exporter.st +386 -0
  105. data/amber/st/Kernel-Announcements.st +92 -0
  106. data/amber/st/Kernel-Classes.st +137 -15
  107. data/amber/st/Kernel-Collections.st +137 -47
  108. data/amber/st/Kernel-Exceptions.st +14 -0
  109. data/amber/st/Kernel-Methods.st +9 -1
  110. data/amber/st/Kernel-Objects.st +29 -5
  111. data/amber/st/Kernel-Tests.st +545 -199
  112. data/amber/st/SUnit.st +10 -0
  113. data/amber/st/Spaces.st +142 -0
  114. data/lib/resin/app.rb +1 -1
  115. metadata +86 -31
  116. data/amber/js/lib/jQuery/jquery-1.4.4.min.js +0 -167
  117. data/amber/js/lib/jQuery/jquery-1.6.4.min.js +0 -4
@@ -0,0 +1,98 @@
1
+ Smalltalk current createPackage: 'Helios-Environments' properties: #{}!
2
+ Object subclass: #HLEnvironment
3
+ instanceVariableNames: ''
4
+ package: 'Helios-Environments'!
5
+ !HLEnvironment commentStamp!
6
+ Abstract class defining common behavior for local and remote environments!
7
+
8
+ !HLEnvironment methodsFor: 'accessing'!
9
+
10
+ packages
11
+
12
+ ^ self subclassResponsibility
13
+ ! !
14
+
15
+ !HLEnvironment methodsFor: 'actions'!
16
+
17
+ eval: someCode on: aReceiver
18
+
19
+ ^ self subclassResponsibility
20
+ ! !
21
+
22
+ HLEnvironment subclass: #HLLocalEnvironment
23
+ instanceVariableNames: ''
24
+ package: 'Helios-Environments'!
25
+
26
+ !HLLocalEnvironment methodsFor: 'accessing'!
27
+
28
+ packages
29
+
30
+ ^ Smalltalk current packages
31
+ ! !
32
+
33
+ !HLLocalEnvironment methodsFor: 'actions'!
34
+
35
+ eval: someCode on: aReceiver
36
+ | compiler |
37
+ compiler := Compiler new.
38
+ [compiler parseExpression: someCode] on: Error do: [:ex |
39
+ ^window alert: ex messageText].
40
+ ^(compiler eval: (compiler compile: 'doIt ^[', someCode, '] value' forClass: DoIt)) fn applyTo: aReceiver arguments: #()
41
+ ! !
42
+
43
+ HLEnvironment subclass: #HLRemoteEnvironment
44
+ instanceVariableNames: ''
45
+ package: 'Helios-Environments'!
46
+
47
+ !HLRemoteEnvironment methodsFor: 'accessing'!
48
+
49
+ packages
50
+ "Answer the remote environment's packages"
51
+
52
+ "to-do"
53
+
54
+ "Note for future self and friends:
55
+ the problem with remote stuff is that the answers shouldn't be expected to be
56
+ received in a syncrhonous fashion. Everything network is asyc, so you *are going to deal with callbacks* here"
57
+ ! !
58
+
59
+ !HLRemoteEnvironment methodsFor: 'actions'!
60
+
61
+ eval: someCode on: aReceiver
62
+
63
+ "Note for future self and friends:
64
+ whatever way this compilation happens on the other side,
65
+ it should return a proxy to the remote resulting object"
66
+
67
+ self notYetImplemented
68
+ ! !
69
+
70
+ Object subclass: #HLRemoteObject
71
+ instanceVariableNames: ''
72
+ package: 'Helios-Environments'!
73
+ !HLRemoteObject commentStamp!
74
+ This is a local proxy to a remote object.
75
+ Tipically useful for evaluating and inspecting and interacting with instances of a remote VM.!
76
+
77
+ !HLRemoteObject methodsFor: 'actions'!
78
+
79
+ doesNotUnderstand: aMessage
80
+
81
+ "to-do
82
+
83
+ aham, blah blah
84
+
85
+ super doesNotUnderstand: aMessage"
86
+ !
87
+
88
+ inspectOn: anInspector
89
+
90
+ "to-do"
91
+
92
+ "this is a source of so much fun..."
93
+ !
94
+
95
+ printString
96
+ ^ 'this is a remote object'
97
+ ! !
98
+
@@ -0,0 +1,367 @@
1
+ Smalltalk current createPackage: 'Helios-Inspector' properties: #{}!
2
+ HLWidget subclass: #HLInspector
3
+ instanceVariableNames: 'model variablesWidget displayWidget codeWidget label'
4
+ package: 'Helios-Inspector'!
5
+
6
+ !HLInspector methodsFor: 'accessing'!
7
+
8
+ codeWidget
9
+ ^ codeWidget ifNil: [
10
+ codeWidget := HLCodeWidget new
11
+ model: model code;
12
+ receiver: model inspectee;
13
+ yourself ]
14
+ !
15
+
16
+ displayWidget
17
+ ^ displayWidget ifNil: [
18
+ displayWidget := HLInspectorDisplayWidget new
19
+ model: self model;
20
+ yourself ]
21
+ !
22
+
23
+ inspectee
24
+ ^ self model inspectee
25
+ !
26
+
27
+ inspectee: anObject
28
+ self model inspectee: anObject
29
+ !
30
+
31
+ label
32
+ ^ label ifNil: [ model inspectee printString ]
33
+ !
34
+
35
+ model
36
+ ^ model ifNil: [
37
+ self model: HLInspectorModel new.
38
+ model ]
39
+ !
40
+
41
+ model: aModel
42
+ model := aModel.
43
+ self codeWidget model: aModel code.
44
+
45
+ self
46
+ observeCodeWidget;
47
+ observeVariablesWidget;
48
+ observeModel
49
+ !
50
+
51
+ tabLabel
52
+ ^ self label
53
+ !
54
+
55
+ variablesWidget
56
+ ^ variablesWidget ifNil: [
57
+ variablesWidget := HLInspectorVariablesWidget new
58
+ model: self model;
59
+ yourself ]
60
+ ! !
61
+
62
+ !HLInspector methodsFor: 'actions'!
63
+
64
+ inspect: anObject
65
+ self model inspect: anObject on: self.
66
+
67
+ self
68
+ refreshVariablesWidget;
69
+ refreshDisplayWidget
70
+ !
71
+
72
+ observeCodeWidget
73
+ self codeWidget announcer
74
+ on: HLDoItExecuted
75
+ do: [ self onDoneIt ]
76
+ !
77
+
78
+ observeModel
79
+ self model announcer
80
+ on: HLInstanceVariableSelected do: [ :ann | self onInstanceVariableSelected ]
81
+ !
82
+
83
+ observeVariablesWidget
84
+ self variablesWidget announcer
85
+ on: HLRefreshRequested do: [ :ann | self onRefresh ];
86
+ on: HLDiveRequested do:[ self onDive ]
87
+ !
88
+
89
+ open
90
+ HLManager current addTab: (HLTab on: self labelled: self tabLabel)
91
+ !
92
+
93
+ refresh
94
+ self inspect: self inspectee
95
+ !
96
+
97
+ refreshDisplayWidget
98
+ self displayWidget refresh
99
+ !
100
+
101
+ refreshVariablesWidget
102
+ self variablesWidget refresh
103
+ !
104
+
105
+ setLabel: aString
106
+ label := aString
107
+ !
108
+
109
+ setVariables: aDictionary
110
+ self model variables: aDictionary
111
+ ! !
112
+
113
+ !HLInspector methodsFor: 'reactions'!
114
+
115
+ onDive
116
+
117
+ self inspect: self model selectedInstVarObject
118
+ !
119
+
120
+ onDoneIt
121
+
122
+ self refresh
123
+ !
124
+
125
+ onInspectIt
126
+ !
127
+
128
+ onInstanceVariableSelected
129
+ self codeWidget receiver: self model selectedInstVarObject.
130
+ self refreshDisplayWidget
131
+ !
132
+
133
+ onPrintIt
134
+ !
135
+
136
+ onRefresh
137
+
138
+ self refresh
139
+ ! !
140
+
141
+ !HLInspector methodsFor: 'rendering'!
142
+
143
+ renderContentOn: html
144
+ html with: (HLContainer with: (HLHorizontalSplitter
145
+ with: (HLVerticalSplitter
146
+ with: self variablesWidget
147
+ with: self displayWidget)
148
+ with: self codeWidget))
149
+ ! !
150
+
151
+ !HLInspector class methodsFor: 'accessing'!
152
+
153
+ tabLabel
154
+ ^ 'Inspector'
155
+ !
156
+
157
+ tabPriority
158
+ ^ 10
159
+ ! !
160
+
161
+ !HLInspector class methodsFor: 'testing'!
162
+
163
+ canBeOpenAsTab
164
+ ^ false
165
+ ! !
166
+
167
+ HLNavigationListWidget subclass: #HLInspectorDisplayWidget
168
+ instanceVariableNames: 'model'
169
+ package: 'Helios-Inspector'!
170
+
171
+ !HLInspectorDisplayWidget methodsFor: 'accessing'!
172
+
173
+ model
174
+
175
+ ^ model
176
+ !
177
+
178
+ model: aModel
179
+
180
+ model := aModel
181
+ ! !
182
+
183
+ !HLInspectorDisplayWidget methodsFor: 'rendering'!
184
+
185
+ renderContentOn: html
186
+
187
+ html div with: self selectionDisplayString
188
+ !
189
+
190
+ selectionDisplayString
191
+ |selection|
192
+ selection := model selection.
193
+ ^ (model variables keys includes: selection)
194
+ ifTrue:[(model instVarObjectAt: selection) printString]
195
+ ifFalse:['']
196
+ ! !
197
+
198
+ Object subclass: #HLInspectorModel
199
+ instanceVariableNames: 'announcer environment inspectee code variables selection'
200
+ package: 'Helios-Inspector'!
201
+
202
+ !HLInspectorModel methodsFor: 'accessing'!
203
+
204
+ announcer
205
+ ^ announcer ifNil: [announcer := Announcer new ]
206
+ !
207
+
208
+ code
209
+ "Answers the code model working for this workspace model"
210
+ ^ code ifNil:[ code := HLCodeModel on: self environment ]
211
+ !
212
+
213
+ environment
214
+ ^ environment ifNil: [ HLManager current environment ]
215
+ !
216
+
217
+ environment: anEnvironment
218
+ environment := anEnvironment
219
+ !
220
+
221
+ inspectee
222
+ ^ inspectee
223
+ !
224
+
225
+ inspectee: anObject
226
+ inspectee := anObject
227
+ !
228
+
229
+ selectedInstVarObject
230
+ ^ self instVarObjectAt: self selection
231
+ !
232
+
233
+ selection
234
+ ^ selection ifNil:[ '' ]
235
+ !
236
+
237
+ selection: anObject
238
+ selection := anObject.
239
+
240
+ self announcer announce: (HLInstanceVariableSelected on: selection)
241
+ !
242
+
243
+ variables
244
+ ^ variables
245
+ !
246
+
247
+ variables: aCollection
248
+ variables := aCollection
249
+ ! !
250
+
251
+ !HLInspectorModel methodsFor: 'actions'!
252
+
253
+ inspect: anObject on: anInspector
254
+ inspectee := anObject.
255
+ variables := #().
256
+ inspectee inspectOn: anInspector
257
+ !
258
+
259
+ instVarObjectAt: anInstVarName
260
+ ^ self variables at: anInstVarName
261
+ !
262
+
263
+ selectedInstVar: anInstVarName
264
+ self selection: anInstVarName
265
+ !
266
+
267
+ subscribe: aWidget
268
+ aWidget subscribeTo: self announcer
269
+ ! !
270
+
271
+ !HLInspectorModel methodsFor: 'reactions'!
272
+
273
+ onKeyDown: anEvent
274
+
275
+ <if(anEvent.ctrlKey) {
276
+ if(anEvent.keyCode === 80) { //ctrl+p
277
+ self._printIt();
278
+ anEvent.preventDefault();
279
+ return false;
280
+ }
281
+ if(anEvent.keyCode === 68) { //ctrl+d
282
+ self._doIt();
283
+ anEvent.preventDefault();
284
+ return false;
285
+ }
286
+ if(anEvent.keyCode === 73) { //ctrl+i
287
+ self._inspectIt();
288
+ anEvent.preventDefault();
289
+ return false;
290
+ }
291
+ }>
292
+ ! !
293
+
294
+ !HLInspectorModel class methodsFor: 'actions'!
295
+
296
+ on: anEnvironment
297
+
298
+ ^ self new
299
+ environment: anEnvironment;
300
+ yourself
301
+ ! !
302
+
303
+ HLNavigationListWidget subclass: #HLInspectorVariablesWidget
304
+ instanceVariableNames: 'announcer model list diveButton'
305
+ package: 'Helios-Inspector'!
306
+
307
+ !HLInspectorVariablesWidget methodsFor: 'accessing'!
308
+
309
+ announcer
310
+ ^ announcer ifNil:[ announcer := Announcer new ]
311
+ !
312
+
313
+ model
314
+ ^ model
315
+ !
316
+
317
+ model: aModel
318
+ model := aModel
319
+ !
320
+
321
+ selection
322
+ ^ model selection
323
+ !
324
+
325
+ variables
326
+ ^ model variables
327
+ ! !
328
+
329
+ !HLInspectorVariablesWidget methodsFor: 'actions'!
330
+
331
+ refresh
332
+ self resetItems.
333
+ super refresh
334
+ !
335
+
336
+ resetItems
337
+ items := nil
338
+ ! !
339
+
340
+ !HLInspectorVariablesWidget methodsFor: 'defaults'!
341
+
342
+ defaultItems
343
+ ^ self model variables keys
344
+ ! !
345
+
346
+ !HLInspectorVariablesWidget methodsFor: 'reactions'!
347
+
348
+ selectItem: anObject
349
+ super selectItem: anObject.
350
+ self model selectedInstVar: anObject
351
+ ! !
352
+
353
+ !HLInspectorVariablesWidget methodsFor: 'rendering'!
354
+
355
+ renderButtonsOn: html
356
+
357
+ html button
358
+ class: 'btn';
359
+ with: 'Refresh';
360
+ onClick: [self announcer announce: HLRefreshRequested new].
361
+
362
+ diveButton := html button
363
+ class: 'btn';
364
+ with: 'Dive';
365
+ onClick: [self announcer announce: HLDiveRequested new]
366
+ ! !
367
+