{-# LANGUAGE DeriveDataTypeable #-}
module Burrito.Internal.Type.Template (Template (..), render) where
import qualified Burrito.Internal.Render as Render
import qualified Burrito.Internal.Type.Token as Token
import qualified Data.Data as Data
import qualified Data.Text.Lazy.Builder as Builder
newtype Template = Template
{ tokens :: [Token.Token]
} deriving (Data.Data, Eq, Ord)
instance Show Template where
show = render
render :: Template -> String
render = Render.builderToString . template
template :: Template -> Builder.Builder
template = foldMap Render.token . tokens