-- Copyright 2014 Alvaro J. Genial [http://alva.ro]; see LICENSE file for more. module Text.Neat.Template where data Element = Output Value | Comment Block | Define Function Block | Filter Value Block | With Binding Block | For Binding Block (Maybe Block) | If Value Block (Maybe Block) | Switch Value [Case] (Maybe Block) -- TODO: Generalize to (Maybe Value) | Text String deriving (Eq, Ord, Read, Show) data File = File String Block deriving (Eq, Ord, Read, Show) data Block = Block [Chunk] deriving (Eq, Ord, Read, Show) data Chunk = Chunk Location Element deriving (Eq, Ord, Read, Show) data Case = Case Pattern Block deriving (Eq, Ord, Read, Show) data Binding = Binding Pattern Value deriving (Eq, Ord, Read, Show) data Location = Location String Int deriving (Eq, Ord, Read, Show) data Value = Value Location Pipeline deriving (Eq, Ord, Read, Show) data Pattern = Pattern Location String deriving (Eq, Ord, Read, Show) data Function = Function Location Name Pattern deriving (Eq, Ord, Read, Show) type Name = String type Pipeline = [String]