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. | |