resin 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
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
+