{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE OverloadedStrings #-}
module YesodDsl.Generator.Fay (fay) where
import YesodDsl.AST
import Text.Shakespeare.Text hiding (toText)
import qualified Data.Text as T
import Data.List
import Data.Maybe
import Data.Char
import YesodDsl.Generator.Common


trPathPiece :: PathPiece -> String
trPathPiece pp = case pp of
    PathText pt -> "PathText " ++ show pt
    PathId _ pi   -> "PathId " ++ show pi

trHandlerType :: HandlerType -> String
trHandlerType ht = case ht of
    PutHandler -> "PutHandler"
    GetHandler -> "GetHandler"
    PostHandler -> "PostHandler"
    DeleteHandler -> "DeleteHandler"

trHandler :: Handler -> String
trHandler h = T.unpack $(codegenFile "codegen/fay-handler.cg")

trField :: Field -> String
trField f = T.unpack $(codegenFile "codegen/fay-field.cg")

trEntity :: Entity -> String
trEntity e = T.unpack $(codegenFile "codegen/fay-entity.cg")

trClass :: Class -> String
trClass c = T.unpack $(codegenFile "codegen/fay-class.cg")

trEnum  :: EnumType -> String
trEnum e = T.unpack $(codegenFile "codegen/fay-enum.cg")

trRoute:: Route -> String
trRoute r = T.unpack $(codegenFile "codegen/fay-route.cg")

fay :: Module -> String
fay m = T.unpack $(codegenFile "codegen/fay-header.cg")