module Text.Twine.Parser.Types where import qualified Data.ByteString.Char8 as C type Key = C.ByteString type Name = C.ByteString type Template = [TemplateCode] data Expr = Func Name [Expr] | Var Name | StringLiteral C.ByteString | NumberLiteral Integer | Accessor Expr Expr deriving (Show,Read,Eq) data TemplateCode = Text C.ByteString | Slot Expr | Loop Expr Key [TemplateCode] | Cond Expr [TemplateCode] | Incl FilePath | Assign Key Expr deriving (Show) data ParserState = ParserState { getBlocks :: [TemplateCode] , getTextQ :: C.ByteString , getTemplate :: C.ByteString } deriving (Show) makePS = ParserState [] C.empty