File size: 925 Bytes
8f3f8db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
JS code generator
emitJSVariablesOn: aStream 
	"Store the global variable declarations on the given stream."
	aStream nextPutAll: '/*** Variables ***/'; cr.
	variables asSortedCollection
		do: [:var | 	| varString varDecl |
			varString := var asString.
			aStream nextPutAll: 'var ', varString.
			varDecl := variableDeclarations at: varString ifAbsent: [''].
			(varDecl includes: $=)
				ifTrue: [ | const |
					const := ((varDecl copyAfter: $=) replaceAll: ${ with: $[) replaceAll: $} with: $].
					aStream nextPutAll: ' =', const]
				ifFalse: [(varDecl includesAnyOf: '*[')
					ifTrue: [(varDecl includes: $[)
						ifTrue: [ | size |
							size := (varDecl copyAfter: $[) copyUpTo: $].
							size ifEmpty: [self halt].
							aStream nextPutAll: ' = new Array(', size, ')']
						ifFalse: [aStream nextPutAll: ' = null']]
					ifFalse: [aStream nextPutAll: ' = 0']].
			aStream nextPutAll: ';'; cr].
	aStream cr.