Spaces:
Running
Running
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. | |