Import qualified name by default.
This commit is contained in:
parent
7dbb052b22
commit
263bf1c0cc
1 changed files with 18 additions and 6 deletions
|
@ -62,11 +62,11 @@ jsModule (Module names exports imports stmts) =
|
||||||
defs = assign "$op" "{}"
|
defs = assign "$op" "{}"
|
||||||
program = "\nvar " ++ usefulFuncs ++ ";" ++ defs ++ includes ++ body ++
|
program = "\nvar " ++ usefulFuncs ++ ";" ++ defs ++ includes ++ body ++
|
||||||
setup ("elm":"Native":modNames) ++
|
setup ("elm":"Native":modNames) ++
|
||||||
assign "_" ("elm.Native." ++ modName ++ " || {}") ++
|
assign "_" ("elm.Native." ++ modName ++ "||{}") ++
|
||||||
getExports exports stmts ++ setup ("elm":modNames) ++
|
getExports exports stmts ++ setup ("elm":modNames) ++
|
||||||
ret (assign' ("elm." ++ modName) "_") ++ "\n"
|
ret (assign' ("elm." ++ modName) "_") ++ "\n"
|
||||||
setup modNames = concatMap (\n -> globalAssign n $ n ++ " || {}") .
|
setup modNames = concatMap (\n -> globalAssign n $ n ++ "||{}") .
|
||||||
map (intercalate ".") . tail . inits $ init modNames
|
map (intercalate ".") . drop 2 . inits $ init modNames
|
||||||
usefulFuncs = intercalate ", " (map (uncurry assign') internalImports)
|
usefulFuncs = intercalate ", " (map (uncurry assign') internalImports)
|
||||||
|
|
||||||
getExports names stmts = "\n"++ intercalate ";\n" (op : map fnPair fns)
|
getExports names stmts = "\n"++ intercalate ";\n" (op : map fnPair fns)
|
||||||
|
@ -95,13 +95,25 @@ jsImport (modul, how) =
|
||||||
case how of
|
case how of
|
||||||
As name -> assign name ("Elm." ++ modul ++ parens "elm")
|
As name -> assign name ("Elm." ++ modul ++ parens "elm")
|
||||||
Importing vs ->
|
Importing vs ->
|
||||||
"\nvar $ = Elm." ++ modul ++ parens "elm" ++ ";" ++
|
"\nvar $ = Elm." ++ modul ++ parens "elm" ++ ";" ++ setup modul ++
|
||||||
if null vs then "\nfor (var k in $) {eval('var '+k+'=$[\"'+k+'\"]')}"
|
if null vs then "\nfor (var k in $) {eval('var '+k+'=$[\"'+k+'\"]')}"
|
||||||
else "\nvar " ++ intercalate ", " (map def vs) ++ ";"
|
else "\nvar " ++ intercalate ", " (map def vs) ++ ";"
|
||||||
where
|
where
|
||||||
imprt v = assign' v ("$." ++ v)
|
imprt v = assign' v ("$." ++ v)
|
||||||
def (o:p) =
|
def (o:p) = imprt (if isOp o then "$op['" ++ o:p ++ "']" else deprime (o:p))
|
||||||
imprt (if isOp o then "$op['" ++ o:p ++ "']" else deprime (o:p))
|
setup moduleName =
|
||||||
|
"\nvar " ++ concatMap (++";") (defs ++ [assign' moduleName "$"])
|
||||||
|
where
|
||||||
|
defs = map (\n -> assign' n (n ++ "||{}")) (subnames moduleName)
|
||||||
|
subnames = map (intercalate ".") . tail . inits . init . split
|
||||||
|
split names = case go [] names of
|
||||||
|
(name, []) -> [name]
|
||||||
|
(name, ns) -> name : split ns
|
||||||
|
go name str = case str of
|
||||||
|
'.':rest -> (reverse name, rest)
|
||||||
|
c:rest -> go (c:name) rest
|
||||||
|
[] -> (reverse name, [])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
stmtsToJS :: [Statement] -> String
|
stmtsToJS :: [Statement] -> String
|
||||||
|
|
Loading…
Reference in a new issue