24 lines
656 B
Haskell
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
|