on c9f3911 help sign in
elk/src/Generate/JavaScript.hs
25 lines 694 B history raw
1module Generate.JavaScript (generate) where
3import Control.Monad.State as State
4import Language.ECMAScript3.PrettyPrint as ES
5import Language.ECMAScript3.Syntax
6import qualified Text.PrettyPrint.Leijen as PP
8import qualified AST.Module as Module
9import qualified Generate.JavaScript.Expression as JS
10import qualified Generate.JavaScript.Variable as Var
13generate :: Module.Optimized -> String
14generate module_ =
15 let
16 definitions =
17 Module.program (Module.body module_)
19 setup =
20 Var.define "_op" (ObjectLit () [])
22 stmts =
23 State.evalState (mapM JS.generateDef definitions) 0
24 in
25 PP.displayS (PP.renderPretty 0.4 160 (ES.prettyPrint (setup:stmts))) ""