module Language.Javascript.JMacro.Util where import Prelude hiding (tail, init, head, last, minimum, maximum, foldr1, foldl1, (!!), read, (<), (&&)) import qualified Prelude as P import Language.Javascript.JMacro.Base (.) :: JExpr -> String -> JExpr x :: JExpr x . :: JExpr -> String -> JExpr . y :: String y = JExpr -> Ident -> JExpr SelExpr JExpr x (String -> Ident StrI String y) (<>) :: (ToJExpr a) => JExpr -> a -> JExpr x :: JExpr x <> :: JExpr -> a -> JExpr <> y :: a y = JExpr -> JExpr -> JExpr IdxExpr JExpr x (a -> JExpr forall a. ToJExpr a => a -> JExpr toJExpr a y) infixl 2 =: (=:) :: ToJExpr a => JExpr -> a -> JStat x :: JExpr x =: :: JExpr -> a -> JStat =: y :: a y = JExpr -> JExpr -> JStat AssignStat JExpr x (a -> JExpr forall a. ToJExpr a => a -> JExpr toJExpr a y) ($) :: (ToJExpr a, ToJExpr b) => a -> b -> JExpr x :: a x $ :: a -> b -> JExpr $ y :: b y = JExpr -> [JExpr] -> JExpr ApplExpr (a -> JExpr forall a. ToJExpr a => a -> JExpr toJExpr a x) (b -> [JExpr] forall a. ToJExpr a => a -> [JExpr] toJExprList b y) ($$) :: (ToJExpr a, ToJExpr b) => a -> b -> JStat x :: a x $$ :: a -> b -> JStat $$ y :: b y = JExpr -> [JExpr] -> JStat ApplStat (a -> JExpr forall a. ToJExpr a => a -> JExpr toJExpr a x) (b -> [JExpr] forall a. ToJExpr a => a -> [JExpr] toJExprList b y) (==), (!=), (<), (&&) :: JExpr -> JExpr -> JExpr x :: JExpr x == :: JExpr -> JExpr -> JExpr == y :: JExpr y = String -> JExpr -> JExpr -> JExpr InfixExpr "==" JExpr x JExpr y x :: JExpr x != :: JExpr -> JExpr -> JExpr != y :: JExpr y = String -> JExpr -> JExpr -> JExpr InfixExpr "!=" JExpr x JExpr y infix 4 < x :: JExpr x < :: JExpr -> JExpr -> JExpr < y :: JExpr y = String -> JExpr -> JExpr -> JExpr InfixExpr "<" JExpr x JExpr y infixr 3 && x :: JExpr x && :: JExpr -> JExpr -> JExpr && y :: JExpr y = String -> JExpr -> JExpr -> JExpr InfixExpr "&&" JExpr x JExpr y null :: JExpr null :: JExpr null = String -> JExpr jsv "null" new :: ToJExpr a => a -> JExpr new :: a -> JExpr new x :: a x = JExpr -> JExpr NewExpr (a -> JExpr forall a. ToJExpr a => a -> JExpr toJExpr a x) if' :: (ToJExpr a, ToStat b) => a -> b -> JStat if' :: a -> b -> JStat if' x :: a x y :: b y = JExpr -> JStat -> JStat -> JStat IfStat (a -> JExpr forall a. ToJExpr a => a -> JExpr toJExpr a x) (b -> JStat forall a. ToStat a => a -> JStat toStat b y) ([JStat] -> JStat BlockStat []) ifElse :: (ToJExpr a, ToStat b, ToStat c) => a -> b -> c -> JStat ifElse :: a -> b -> c -> JStat ifElse x :: a x y :: b y z :: c z = JExpr -> JStat -> JStat -> JStat IfStat (a -> JExpr forall a. ToJExpr a => a -> JExpr toJExpr a x) (b -> JStat forall a. ToStat a => a -> JStat toStat b y) (c -> JStat forall a. ToStat a => a -> JStat toStat c z) while :: ToJExpr a => a -> JStat -> JStat while :: a -> JStat -> JStat while x :: a x y :: JStat y = Bool -> JExpr -> JStat -> JStat WhileStat Bool False (a -> JExpr forall a. ToJExpr a => a -> JExpr toJExpr a x) JStat y return :: ToJExpr a => a -> JStat return :: a -> JStat return x :: a x = JExpr -> JStat ReturnStat (a -> JExpr forall a. ToJExpr a => a -> JExpr toJExpr a x) toJExprList :: ToJExpr a => a -> [JExpr] toJExprList :: a -> [JExpr] toJExprList x :: a x = case a -> JExpr forall a. ToJExpr a => a -> JExpr toJExpr a x of (ValExpr (JList l :: [JExpr] l)) -> [JExpr] l x' :: JExpr x' -> [JExpr x'] jstr :: P.String -> JExpr jstr :: String -> JExpr jstr = JVal -> JExpr ValExpr (JVal -> JExpr) -> (String -> JVal) -> String -> JExpr forall b c a. (b -> c) -> (a -> b) -> a -> c P.. String -> JVal JStr