@@ -30,14 +30,14 @@ varDecl :: String -> Expression () -> VarDecl ()
30varDecl x expr =
30varDecl x expr =
31 VarDecl () (var x) (Just expr)
31 VarDecl () (var x) (Just expr)
33−internalImports :: String -> [VarDecl ()]
33+internalImports :: Module.Name -> [VarDecl ()]
34internalImports name =
34internalImports name =
35 [ varDecl "_N" (obj ["Elm","Native"])
35 [ varDecl "_N" (obj ["Elm","Native"])
36 , include "_U" "Utils"
36 , include "_U" "Utils"
37 , include "_L" "List"
37 , include "_L" "List"
38 , include "_A" "Array"
38 , include "_A" "Array"
39 , include "_E" "Error"
39 , include "_E" "Error"
40− , varDecl Help.localModuleName (string name)
40+ , varDecl Help.localModuleName (string (Module.nameToString name))
43 include :: String -> String -> VarDecl ()
43 include :: String -> String -> VarDecl ()
@@ -149,7 +149,7 @@ expression (A region expr) =
149 MultiIf branches ->
149 MultiIf branches ->
150 do branches' <- forM branches $ \(b,e) -> (,) <$> expression b <*> expression e
150 do branches' <- forM branches $ \(b,e) -> (,) <$> expression b <*> expression e
151 return $ case last branches of
151 return $ case last branches of
152− (A _ (Var (Var.Canonical (Var.Module "Basics") "otherwise")), _) ->
152+ (A _ (Var (Var.Canonical (Var.Module ["Basics"]) "otherwise")), _) ->
153 safeIfs branches'
153 safeIfs branches'
154 (A _ (Literal (Boolean True)), _) -> safeIfs branches'
154 (A _ (Literal (Boolean True)), _) -> safeIfs branches'
155 _ -> ifs branches' (throw "If" region)
155 _ -> ifs branches' (throw "If" region)
@@ -183,7 +183,7 @@ expression (A region expr) =
184 Markdown uid doc es ->
184 Markdown uid doc es ->
185 do es' <- mapM expression es
185 do es' <- mapM expression es
186− return $ Var.value "Text" "markdown" `call` (string md : string uid : es')
186+ return $ Var.value ["Text"] "markdown" `call` (string md : string uid : es')
188 pad = "<div style=\"height:0;width:0;\"> </div>"
188 pad = "<div style=\"height:0;width:0;\"> </div>"
189 md = pad ++ MD.toHtml doc ++ pad
189 md = pad ++ MD.toHtml doc ++ pad
@@ -192,12 +192,12 @@ expression (A region expr) =
192 return $ ObjectLit () [(PropString () "src", literal (Str src))]
192 return $ ObjectLit () [(PropString () "src", literal (Str src))]
194 PortIn name tipe ->
194 PortIn name tipe ->
195− return $ Var.value "Native.Ports" "portIn" `call`
195+ return $ Var.value ["Native","Ports"] "portIn" `call`
196 [ string name, Port.incoming tipe ]
196 [ string name, Port.incoming tipe ]
198 PortOut name tipe value ->
198 PortOut name tipe value ->
199 do value' <- expression value
199 do value' <- expression value
200− return $ Var.value "Native.Ports" "portOut" `call`
200+ return $ Var.value ["Native","Ports"] "portOut" `call`
201 [ string name, Port.outgoing tipe, value' ]
201 [ string name, Port.outgoing tipe, value' ]
203definition :: Canonical.Def -> State Int [Statement ()]
203definition :: Canonical.Def -> State Int [Statement ()]
@@ -326,17 +326,17 @@ generate modul =
327 localVars :: [VarDecl ()]
327 localVars :: [VarDecl ()]
328 localVars = varDecl "_op" (ObjectLit () []) :
328 localVars = varDecl "_op" (ObjectLit () []) :
329− internalImports (Module.getName modul) ++
329+ internalImports (Module.names modul) ++
330 explicitImports
330 explicitImports
332 explicitImports :: [VarDecl ()]
332 explicitImports :: [VarDecl ()]
333 explicitImports =
333 explicitImports =
334 map jsImport . Set.toList . Set.fromList . map fst $ Module.imports modul
334 map jsImport . Set.toList . Set.fromList . map fst $ Module.imports modul
336− jsImport :: String -> VarDecl ()
336+ jsImport :: Module.Name -> VarDecl ()
337 jsImport name =
337 jsImport name =
338 varDecl (Var.moduleName name) $
338 varDecl (Var.moduleName name) $
339− obj ("Elm" : Help.splitDots name ++ ["make"]) <| ref "_elm"
339+ obj ("Elm" : name ++ ["make"]) <| ref "_elm"
341 body :: [Statement ()]
341 body :: [Statement ()]
342 body = concat $ evalState defs 0
342 body = concat $ evalState defs 0
@@ -369,20 +369,20 @@ binop :: Region -> Var.Canonical -> Canonical.Expr -> Canonical.Expr
369 -> State Int (Expression ())
369 -> State Int (Expression ())
370binop region func@(Var.Canonical home op) e1 e2 =
370binop region func@(Var.Canonical home op) e1 e2 =
371 case (home, op) of
371 case (home, op) of
372− (Var.Module "Basics", ">>") ->
372+ (Var.Module ["Basics"], ">>") ->
373 do es <- mapM expression (collectLeftAssoc [e2] e1)
373 do es <- mapM expression (collectLeftAssoc [e2] e1)
374 return $ ["$"] ==> List.foldl' (\e f -> f <| e) (ref "$") es
374 return $ ["$"] ==> List.foldl' (\e f -> f <| e) (ref "$") es
376− (Var.Module "Basics", "<<") ->
376+ (Var.Module ["Basics"], "<<") ->
377 do es <- mapM expression (e1 : collectRightAssoc [] e2)
377 do es <- mapM expression (e1 : collectRightAssoc [] e2)
378 return $ ["$"] ==> foldr (<|) (ref "$") es
378 return $ ["$"] ==> foldr (<|) (ref "$") es
380− (Var.Module "Basics", "<|") ->
380+ (Var.Module ["Basics"], "<|") ->
381 do e2' <- expression e2
381 do e2' <- expression e2
382 es <- mapM expression (collectRightAssoc [] e1)
382 es <- mapM expression (collectRightAssoc [] e1)
383 return $ foldr (<|) e2' es
383 return $ foldr (<|) e2' es
385− (Var.Module "List", "++") ->
385+ (Var.Module ["List"], "++") ->
386 do e1' <- expression e1
386 do e1' <- expression e1
387 e2' <- expression e2
387 e2' <- expression e2
388 return $ _List "append" `call` [e1', e2']
388 return $ _List "append" `call` [e1', e2']
@@ -390,7 +390,7 @@ binop region func@(Var.Canonical home op) e1 e2 =
390 (Var.BuiltIn, "::") ->
390 (Var.BuiltIn, "::") ->
391 expression (A region (Data "::" [e1,e2]))
391 expression (A region (Data "::" [e1,e2]))
393− (Var.Module "Basics", _) ->
393+ (Var.Module ["Basics"], _) ->
394 do e1' <- expression e1
394 do e1' <- expression e1
395 e2' <- expression e2
395 e2' <- expression e2
396 return $ case Map.lookup op basicOps of
396 return $ case Map.lookup op basicOps of
@@ -405,13 +405,13 @@ binop region func@(Var.Canonical home op) e1 e2 =
406 collectRightAssoc es e =
406 collectRightAssoc es e =
407 case e of
407 case e of
408− A _ (Binop (Var.Canonical (Var.Module "Basics") "<<") e1 e2) ->
408+ A _ (Binop (Var.Canonical (Var.Module ["Basics"]) "<<") e1 e2) ->
409 collectRightAssoc (es ++ [e1]) e2
409 collectRightAssoc (es ++ [e1]) e2
410 _ -> es ++ [e]
410 _ -> es ++ [e]
412 collectLeftAssoc es e =
412 collectLeftAssoc es e =
413 case e of
413 case e of
414− A _ (Binop (Var.Canonical (Var.Module "Basics") ">>") e1 e2) ->
414+ A _ (Binop (Var.Canonical (Var.Module ["Basics"]) ">>") e1 e2) ->
415 collectLeftAssoc (e2 : es) e1
415 collectLeftAssoc (e2 : es) e1
416 _ -> e : es
416 _ -> e : es