lebd/src/Util.hs

27 lines
775 B
Haskell

module Util ( compileMustache, entityToTuple, mapFirst ) where
import Database.Persist ( Entity(..), Key )
import Text.Mustache ( Template(..), compileTemplate )
import Text.Mustache.Types ( Node(TextBlock) )
import Text.Parsec.Error ( ParseError )
import qualified Data.Text as T
import qualified Data.HashMap.Lazy as M
mapFirst :: (a -> a) -> [a] -> [a]
mapFirst f (x:xs) = f x : xs
mapFirst _ [] = []
compileMustache :: String -> T.Text -> Template
compileMustache n = either errorTemplate id . compileTemplate n
errorTemplate :: ParseError -> Template
errorTemplate err = Template
{ name = "error"
, ast = [TextBlock . T.pack $ show err]
, partials = M.empty
}
entityToTuple :: Entity t -> (Key t, t)
entityToTuple (Entity key value) = (key, value)