packages feed

scotty-fay-0.0.2: src/Web/Scotty/Fay/Config.hs

module Web.Scotty.Fay.Config where

import Data.Default
import qualified Data.Text as T
import qualified Fay
import qualified Fay.Compiler.Config as Fay

data Config = Config
    { configBasePath    :: T.Text
    , configIncludeDirs :: [FilePath]
    }

instance Default Config where
    def = Config
        { configBasePath    = ""
        , configIncludeDirs = []
        }

type ConfigBuilder = Config -> Config

buildConfig :: ConfigBuilder -> Config
buildConfig f = f def

-- Convert a scotty-fay Config to a Fay CompileConfig
toFay :: Config -> Fay.CompileConfig
toFay conf = Fay.addConfigDirectoryIncludePaths (configIncludeDirs conf) $ def

under :: T.Text -> ConfigBuilder
under basePath conf = conf { configBasePath = basePath }

from :: FilePath -> ConfigBuilder
from dir = fromDirs [dir]

fromDirs :: [FilePath] -> ConfigBuilder
fromDirs dirs conf =
    conf { configIncludeDirs = dirs ++ configIncludeDirs conf }