@@ -23,29 +23,20 @@ fresh =
24-- DEF NAMES
24-- DEF NAMES
26−define :: Maybe ModuleName.Canonical -> String -> JS.Expression () -> JS.Statement ()
26+define :: String -> JS.Expression () -> JS.Statement ()
27−define maybeHome name body =
27+define name body =
30− JS.VarDeclStmt () [ JS.VarDecl () (JS.Id () safeName) (Just body) ]
37− if Help.isOp name then
28+ if Help.isOp name then
40− JS.VarRef () (JS.Id () (canonicalPrefix home "_op"))
31+ JS.VarRef () (JS.Id () "_op")
43− JS.LBracket () root (JS.StringLit () name)
34+ JS.LBracket () root (JS.StringLit () name)
45− JS.ExprStmt () (JS.AssignExpr () JS.OpAssign lvalue body)
36+ JS.ExprStmt () (JS.AssignExpr () JS.OpAssign lvalue body)
48− varDecl (canonicalPrefix home (safe name))
39+ JS.VarDeclStmt () [ JS.VarDecl () (JS.Id () (safe name)) (Just body) ]
51-- INSTANTIATE VARIABLES
42-- INSTANTIATE VARIABLES
@@ -53,34 +44,31 @@ define maybeHome name body =
53canonical :: Var.Canonical -> JS.Expression ()
44canonical :: Var.Canonical -> JS.Expression ()
54canonical (Var.Canonical home name) =
45canonical (Var.Canonical home name) =
55 if Help.isOp name then
46 if Help.isOp name then
56− JS.BracketRef () (JS.ref (addRoot home "_op")) (JS.string name)
47+ JS.BracketRef () (addRoot home "_op") (JS.string name)
59− JS.ref (addRoot home (safe name))
50+ addRoot home (safe name)
62−addRoot :: Var.Home -> String -> String
53+addRoot :: Var.Home -> String -> JS.Expression ()
63addRoot home name =
54addRoot home name =
64 case home of
55 case home of
65 Var.Local ->
56 Var.Local ->
68− Var.TopLevel moduleName ->
59+ Var.TopLevel _moduleName ->
69− canonicalPrefix moduleName name
60+ JS.ref name
71 Var.BuiltIn ->
62 Var.BuiltIn ->
74 Var.Module moduleName ->
65 Var.Module moduleName ->
75− canonicalPrefix moduleName name
66+ JS.DotRef () (JS.ref (canonicalModuleName moduleName)) (JS.Id () name)
78−canonicalPrefix :: ModuleName.Canonical -> String -> String
69+canonicalModuleName :: ModuleName.Canonical -> String
79−canonicalPrefix (ModuleName.Canonical (Pkg.Name user project) moduleName) name =
70+canonicalModuleName (ModuleName.Canonical (Pkg.Name _user _project) moduleName) =
80− map (swap '-' '_') user
81− ++ '$' : map (swap '-' '_') project
82− ++ '$' : List.intercalate "$" moduleName
71+ '$' : List.intercalate "$" moduleName
86swap :: Char -> Char -> Char -> Char
74swap :: Char -> Char -> Char -> Char