on 3734eff help sign in
66 lines 911 B history raw
1{-# OPTIONS_GHC -Wall #-}
2module Generate.JavaScript.Helpers
3 ( varDecl
4 , refOrObject
5 , ref
6 , (==>)
7 , obj
8 , (<|)
9 , function
10 )
11 where
13import Data.Text (Text)
14import Generate.JavaScript.Builder
18-- DECLARATIONS
21varDecl :: Text -> Expr -> VarDecl
22varDecl x expr =
23 VarDecl (Id x) (Just expr)
26refOrObject :: Text -> Expr
27refOrObject name =
28 Infix OpLOr (ref name) (Object [])
32-- VARIABLES
35ref :: Text -> Expr
36ref name =
37 VarRef (Id name)
40(==>) :: Text -> Expr -> (Prop, Expr)
41(==>) name expr =
42 ( IdProp (Id name), expr )
45obj :: [Text] -> Expr
46obj vars =
47 case vars of
48 x:xs ->
49 foldl DotRef (ref x) (map Id xs)
51 [] ->
52 error "dotSep must be called on a non-empty list of variables"
56-- FUNCTION CALLS
59(<|) :: Expr -> Expr -> Expr
60(<|) f x =
61 Call f [x]
64function :: [Text] -> [Stmt] -> Expr
65function args stmts =
66 Function Nothing (map Id args) stmts