-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Template Toolkit implementation for Haskell
--   
--   Template Toolkit is a template processing system originally written in
--   Perl by Andy Wardley. This haskell implementation includes such
--   features as: scalar, array, hash variables, variable interpolation,
--   conditional directives, loops and loop controls, external templates
--   and internal blocks processing, many virtual methods and filters,
--   templates caching.
@package template-toolkit
@version 0.1.1.0

module Text.TemplateToolkitAST
type Array = Seq Val
type StmtId = (Int, Int, Int)
type TName = String
data IString
IString :: Text -> IString
IVar :: Var -> IString
data Val
VString :: Text -> Val
VIString :: [IString] -> Val
VInt :: Integer -> Val
VFloat :: Double -> Val
VArray :: [Expr] -> Val
VArrayRange :: Expr -> Expr -> Val
VArrayV :: Array -> Val
VHash :: [(String, Expr)] -> Val
VHashV :: Hash -> Val
VRef :: String -> Val
VCode :: Stmt -> Val
Undef :: Val
data VarNode
VarKey :: String -> VarNode
VarIndex :: Int -> VarNode
VarMethod :: String -> [Expr] -> VarNode
VarRef :: Var -> VarNode
data Var
Var :: [VarNode] -> Var
data Expr
EVal :: Val -> Expr
EVar :: Var -> Expr
EAssign :: Var -> Expr -> Expr
EUnOp :: UnOp -> Expr -> Expr
EBinOp :: BinOp -> Expr -> Expr -> Expr
ETerOp :: Expr -> Expr -> Expr -> Expr
data UnOp
Pos :: UnOp
Neg :: UnOp
Not :: UnOp
data BinOp
Add :: BinOp
Sub :: BinOp
Mul :: BinOp
Div :: BinOp
Mod :: BinOp
Con :: BinOp
Gt :: BinOp
Ge :: BinOp
Lt :: BinOp
Le :: BinOp
Eq :: BinOp
Ne :: BinOp
And :: BinOp
Or :: BinOp
data Else
Else :: Stmt -> Else
Elsif :: Expr -> Stmt -> Maybe Else -> Else
data Stmt
Seq :: [Stmt] -> StmtId -> LineN -> Stmt
[sSeq] :: Stmt -> [Stmt]
[sId] :: Stmt -> StmtId
[lineN] :: Stmt -> LineN
SComment :: StmtId -> LineN -> Stmt
[sId] :: Stmt -> StmtId
[lineN] :: Stmt -> LineN
SText :: Text -> StmtId -> LineN -> Stmt
[sText] :: Stmt -> Text
[sId] :: Stmt -> StmtId
[lineN] :: Stmt -> LineN
SIf :: Expr -> Stmt -> Maybe Else -> StmtId -> LineN -> Stmt
[sCond] :: Stmt -> Expr
[sBody] :: Stmt -> Stmt
[sElse] :: Stmt -> Maybe Else
[sId] :: Stmt -> StmtId
[lineN] :: Stmt -> LineN
SWhile :: Expr -> Stmt -> StmtId -> LineN -> Stmt
[sCond] :: Stmt -> Expr
[sBody] :: Stmt -> Stmt
[sId] :: Stmt -> StmtId
[lineN] :: Stmt -> LineN
SForeach :: Var -> Expr -> Stmt -> StmtId -> LineN -> Stmt
[sForeachVar] :: Stmt -> Var
[sForeachArr] :: Stmt -> Expr
[sBody] :: Stmt -> Stmt
[sId] :: Stmt -> StmtId
[lineN] :: Stmt -> LineN
SNext :: StmtId -> LineN -> Stmt
[sId] :: Stmt -> StmtId
[lineN] :: Stmt -> LineN
SLast :: StmtId -> LineN -> Stmt
[sId] :: Stmt -> StmtId
[lineN] :: Stmt -> LineN
SBlock :: String -> Stmt -> StmtId -> LineN -> Stmt
[sBlockName] :: Stmt -> String
[sBody] :: Stmt -> Stmt
[sId] :: Stmt -> StmtId
[lineN] :: Stmt -> LineN
SProcess :: IString -> [Stmt] -> StmtId -> LineN -> Stmt
[sProcessName] :: Stmt -> IString
[sProcessAssigns] :: Stmt -> [Stmt]
[sId] :: Stmt -> StmtId
[lineN] :: Stmt -> LineN
SWrapper :: IString -> [Stmt] -> Stmt -> StmtId -> LineN -> Stmt
[sWrapperName] :: Stmt -> IString
[sWrapperAssigns] :: Stmt -> [Stmt]
[sBody] :: Stmt -> Stmt
[sId] :: Stmt -> StmtId
[lineN] :: Stmt -> LineN
SAssign :: Var -> Expr -> StmtId -> LineN -> Stmt
[sAssignVar] :: Stmt -> Var
[sAssignExpr] :: Stmt -> Expr
[sId] :: Stmt -> StmtId
[lineN] :: Stmt -> LineN
SExpr :: Expr -> StmtId -> LineN -> Stmt
[sExpr] :: Stmt -> Expr
[sId] :: Stmt -> StmtId
[lineN] :: Stmt -> LineN
SFilter :: String -> [Expr] -> Stmt -> StmtId -> LineN -> Stmt
[sFilterName] :: Stmt -> String
[sFilterParams] :: Stmt -> [Expr]
[sBody] :: Stmt -> Stmt
[sId] :: Stmt -> StmtId
[lineN] :: Stmt -> LineN
parseTemplateWithStmtId :: Text -> TName -> StmtId -> Either ParseError Stmt
parseTemplate :: TName -> Text -> Either ParseError Stmt
instance GHC.Generics.Generic Text.TemplateToolkitAST.IString
instance GHC.Show.Show Text.TemplateToolkitAST.IString
instance GHC.Generics.Generic Text.TemplateToolkitAST.Val
instance GHC.Show.Show Text.TemplateToolkitAST.Val
instance GHC.Generics.Generic Text.TemplateToolkitAST.VarNode
instance GHC.Show.Show Text.TemplateToolkitAST.VarNode
instance GHC.Generics.Generic Text.TemplateToolkitAST.Var
instance GHC.Show.Show Text.TemplateToolkitAST.Var
instance GHC.Generics.Generic Text.TemplateToolkitAST.Expr
instance GHC.Show.Show Text.TemplateToolkitAST.Expr
instance GHC.Generics.Generic Text.TemplateToolkitAST.Else
instance GHC.Show.Show Text.TemplateToolkitAST.Else
instance GHC.Generics.Generic Text.TemplateToolkitAST.Stmt
instance GHC.Show.Show Text.TemplateToolkitAST.Stmt
instance GHC.Generics.Generic Text.TemplateToolkitAST.BinOp
instance GHC.Show.Show Text.TemplateToolkitAST.BinOp
instance GHC.Generics.Generic Text.TemplateToolkitAST.UnOp
instance GHC.Show.Show Text.TemplateToolkitAST.UnOp
instance Data.Binary.Class.Binary Text.TemplateToolkitAST.IString
instance Data.Binary.Class.Binary Text.TemplateToolkitAST.Var
instance Data.Binary.Class.Binary Text.TemplateToolkitAST.VarNode
instance Data.Binary.Class.Binary Text.TemplateToolkitAST.Val
instance Data.Binary.Class.Binary Text.TemplateToolkitAST.Expr
instance Data.Binary.Class.Binary Text.TemplateToolkitAST.Else
instance Data.Binary.Class.Binary Text.TemplateToolkitAST.Stmt
instance Data.Binary.Class.Binary Text.TemplateToolkitAST.BinOp
instance Data.Binary.Class.Binary Text.TemplateToolkitAST.UnOp


-- | This is a Haskell implementation of <a>Template Toolkit</a> - the
--   popular Perl template processing system.
module Text.TemplateToolkit
type TName = String
type TErr = String
data TConfig
AesonObject :: Value -> TConfig
JSONstring :: Text -> TConfig
evalTemplateFile :: TName -> TConfig -> IO (Either TErr Text)
instance GHC.Classes.Eq Text.TemplateToolkitAST.Val
instance GHC.Classes.Ord Text.TemplateToolkitAST.Val
instance GHC.Num.Num Text.TemplateToolkitAST.Val
instance GHC.Real.Fractional Text.TemplateToolkitAST.Val


-- | Template Toolkit is a template processing system originally written in
--   Perl by Andy Wardley. Below is the complete documentation of features
--   implemented in Haskell version of the system. Original documentation
--   is available <a>here</a>, but be warned that not all features are
--   realized in Haskell version.
module Text.TemplateToolkitLang
