@@ -2,7 +2,6 @@ module Generate.JavaScript.Ports (incoming, outgoing) where
3import qualified Data.List as List
3import qualified Data.List as List
4import Generate.JavaScript.Helpers
4import Generate.JavaScript.Helpers
5−import qualified Generate.JavaScript.Variable as V
6import AST.Type as T
5import AST.Type as T
7import qualified AST.Variable as Var
6import qualified AST.Variable as Var
8import Language.ECMAScript3.Syntax
7import Language.ECMAScript3.Syntax
@@ -27,6 +26,21 @@ typeToString tipe =
27 "an object with fields '" ++ List.intercalate "', '" fields ++ "'"
26 "an object with fields '" ++ List.intercalate "', '" fields ++ "'"
29+_Array :: String -> Expression ()
31+ useLazy ["Elm","Native","Array"] functionName
34+_List :: String -> Expression ()
36+ useLazy ["Elm","Native","List"] functionName
39+_Maybe :: String -> Expression ()
41+ useLazy ["Elm","Maybe"] functionName
30check :: Expression () -> JSType -> Expression () -> Expression ()
44check :: Expression () -> JSType -> Expression () -> Expression ()
31check x jsType continue =
45check x jsType continue =
32 CondExpr () (jsFold OpLOr checks x) continue throw
46 CondExpr () (jsFold OpLOr checks x) continue throw
@@ -89,14 +103,14 @@ inc tipe x =
89 | Var.isMaybe name ->
103 | Var.isMaybe name ->
90 CondExpr ()
104 CondExpr ()
91 (equal x (NullLit ()))
105 (equal x (NullLit ()))
92− (V.value ["Maybe"] "Nothing")
106+ (_Maybe "Nothing")
93− (V.value ["Maybe"] "Just" <| inc t x)
107+ (_Maybe "Just" <| inc t x)
95 | Var.isList name ->
109 | Var.isList name ->
96− check x JSArray (obj ["_L","fromArray"] <| array)
110+ check x JSArray (_List "fromArray" <| array)
98 | Var.isArray name ->
112 | Var.isArray name ->
99− check x JSArray (obj ["_A","fromJSArray"] <| array)
113+ check x JSArray (_Array "fromJSArray" <| array)
101 array = DotRef () x (var "map") <| incoming t
115 array = DotRef () x (var "map") <| incoming t
@@ -181,10 +195,10 @@ out tipe x =
181 (out t (DotRef () x (var "_0")))
195 (out t (DotRef () x (var "_0")))
183 | Var.isArray name ->
197 | Var.isArray name ->
184− DotRef () (obj ["_A","toJSArray"] <| x) (var "map") <| outgoing t
198+ DotRef () (_Array "toJSArray" <| x) (var "map") <| outgoing t
186 | Var.isList name ->
200 | Var.isList name ->
187− DotRef () (obj ["_L","toArray"] <| x) (var "map") <| outgoing t
201+ DotRef () (_List "toArray" <| x) (var "map") <| outgoing t
189 Type name : ts
203 Type name : ts
190 | Var.isTuple name ->
204 | Var.isTuple name ->