@@ -2,7 +2,6 @@ module Generate.JavaScript.Ports (incoming, outgoing) where
22
33import qualified Data.List as List
44import Generate.JavaScript.Helpers
5−import qualified Generate.JavaScript.Variable as V
65import AST.Type as T
76import qualified AST.Variable as Var
87import Language.ECMAScript3.Syntax
@@ -27,6 +26,21 @@ typeToString tipe =
2726 "an object with fields '" ++ List.intercalate "', '" fields ++ "'"
2827
2928
29+_Array :: String -> Expression ()
30+_Array functionName =
31+ useLazy ["Elm","Native","Array"] functionName
32+
33+
34+_List :: String -> Expression ()
35+_List functionName =
36+ useLazy ["Elm","Native","List"] functionName
37+
38+
39+_Maybe :: String -> Expression ()
40+_Maybe functionName =
41+ useLazy ["Elm","Maybe"] functionName
42+
43+
3044check :: Expression () -> JSType -> Expression () -> Expression ()
3145check x jsType continue =
3246 CondExpr () (jsFold OpLOr checks x) continue throw
@@ -89,14 +103,14 @@ inc tipe x =
89103 | Var.isMaybe name ->
90104 CondExpr ()
91105 (equal x (NullLit ()))
92− (V.value ["Maybe"] "Nothing")
93− (V.value ["Maybe"] "Just" <| inc t x)
106+ (_Maybe "Nothing")
107+ (_Maybe "Just" <| inc t x)
94108
95109 | Var.isList name ->
96− check x JSArray (obj ["_L","fromArray"] <| array)
110+ check x JSArray (_List "fromArray" <| array)
97111
98112 | Var.isArray name ->
99− check x JSArray (obj ["_A","fromJSArray"] <| array)
113+ check x JSArray (_Array "fromJSArray" <| array)
100114 where
101115 array = DotRef () x (var "map") <| incoming t
102116
@@ -181,10 +195,10 @@ out tipe x =
181195 (out t (DotRef () x (var "_0")))
182196
183197 | Var.isArray name ->
184− DotRef () (obj ["_A","toJSArray"] <| x) (var "map") <| outgoing t
198+ DotRef () (_Array "toJSArray" <| x) (var "map") <| outgoing t
185199
186200 | Var.isList name ->
187− DotRef () (obj ["_L","toArray"] <| x) (var "map") <| outgoing t
201+ DotRef () (_List "toArray" <| x) (var "map") <| outgoing t
188202
189203 Type name : ts
190204 | Var.isTuple name ->