packages feed

ginger2-2.0.0.0: src/Language/Ginger/FileLoader.hs

{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings #-}

module Language.Ginger.FileLoader
where

import System.FilePath
import qualified Data.Text as Text
import qualified Data.Text.IO as Text
import Control.Monad.IO.Class (MonadIO (..))
import Data.Maybe (fromMaybe)

import Language.Ginger.Value

fileLoader :: forall m. MonadIO m
           => FilePath
           -> TemplateLoader m
fileLoader baseDir templateName = do
  let templateBasename =
          Text.unpack .
          Text.replace ".." "" .
          Text.replace "//" "/" .
          fromMaybe templateName .
          Text.stripPrefix "/" $
            templateName
      templateFilename =
          baseDir </> templateBasename
  liftIO $ Just <$> Text.readFile templateFilename