@@ -1,4 +1,4 @@
1− module CompileToJS (showErr, jsModule) where
1+module CompileToJS (showErr, jsModule) where
22
33import Control.Arrow (first,second)
44import Control.Monad (liftM,(<=<),join,ap)
@@ -41,24 +41,24 @@ quoted s = "'" ++ concatMap f s ++ "'"
4141 f '\\' = "\\\\"
4242 f c = [c]
4343
44−mainEquals s = globalAssign "Elm.main" (jsFunc "" (ret s))
44+mainEquals s = globalAssign "Elm.main" (jsFunc "" (ret (s ++ ".main")))
4545globalAssign n e = "\n" ++ assign' n e ++ ";"
4646assign' n e = n ++ " = " ++ e
4747
4848jsModule (Module names exports imports stmts) =
49− concat [ concatMap (\n -> globalAssign n $ n ++ " || {}") .
50− map (intercalate ".") . drop 2 . inits $
51− take (length modNames - 1) modNames
52− , parens (jsFunc "" (defs ++ includes ++ body ++ globalAssign modName export) ++ "()")
53− , mainEquals $ modName ++ ".main" ]
54− where modNames = if null names then ["Elm", "Main"]
55− else "Elm" : names
56− modName = intercalate "." modNames
57− includes = concatMap jsImport imports
58− body = stmtsToJS stmts
59− export = getExports exports stmts
60− exps = if null exports then ["main"] else exports
61− defs = assign "$op" "{}"
49+ setup ++ parens (jsFunc "" program ++ "()") ++ mainEquals modName
50+ where
51+ modNames = if null names then ["Elm", "Main"] else "Elm" : names
52+ modName = intercalate "." modNames
53+ includes = concatMap jsImport imports
54+ body = stmtsToJS stmts
55+ export = getExports exports stmts
56+ exps = if null exports then ["main"] else exports
57+ defs = assign "$op" "{}"
58+ program = defs ++ includes ++ body ++ globalAssign modName export
59+ setup = concatMap (\n -> globalAssign n $ n ++ " || {}") .
60+ map (intercalate ".") . drop 2 . inits $
61+ take (length modNames - 1) modNames
6262
6363getExports names stmts = brackets . ("\n "++) $
6464 intercalate ",\n " (op : map fnPair fns)