nani.wtf/ssg/src/Util/Routes.hs

24 lines
656 B
Haskell

{-# LANGUAGE OverloadedStrings #-}
module Util.Routes where
import Hakyll
import Data.Maybe (fromMaybe)
import qualified Data.Text as T
import qualified Data.Text.Slugger as Slugger
prefixRoute :: FilePath -> Routes
prefixRoute p = customRoute $ \id' -> p ++ (toFilePath id')
titleRoute :: Metadata -> Routes
titleRoute = constRoute . fileNameFromTitle
where
getTitleFromMeta :: Metadata -> String
getTitleFromMeta =
fromMaybe "no title" . lookupString "title"
fileNameFromTitle :: Metadata -> FilePath
fileNameFromTitle =
T.unpack . (`T.append` ".html") . Slugger.toSlug . T.pack . getTitleFromMeta