on c5da7c0 help sign in
56 lines 803 B history raw
1module Generate.JavaScript.Helpers where
3import Data.Text (Text)
4import Generate.JavaScript.Builder
8-- DECLARATIONS
11varDecl :: Text -> Expr -> VarDecl
12varDecl x expr =
13 VarDecl (Id x) (Just expr)
16refOrObject :: Text -> Expr
17refOrObject name =
18 Infix OpLOr (ref name) (Object [])
22-- VARIABLES
25ref :: Text -> Expr
26ref name =
27 VarRef (Id name)
30(==>) :: Text -> Expr -> (Prop, Expr)
31(==>) name expr =
32 ( IdProp (Id name), expr )
35obj :: [Text] -> Expr
36obj vars =
37 case vars of
38 x:xs ->
39 foldl DotRef (ref x) (map Id xs)
41 [] ->
42 error "dotSep must be called on a non-empty list of variables"
46-- FUNCTION CALLS
49(<|) :: Expr -> Expr -> Expr
50(<|) f x =
51 Call f [x]
54function :: [Text] -> [Stmt] -> Expr
55function args stmts =
56 Function Nothing (map Id args) stmts