module Hakyll.Util ( -- * Route utils dropParentRoute , modifyDirRoute , modifyDirRoute_ -- * Context utils , transformContext , transformContext_ ) where import Prolog import Hakyll import System.FilePath -- | Drop some number of parent directories dropParentRoute :: Int -> Routes dropParentRoute n = modifyDirRoute_ $ drop n modifyDirRoute :: ([FilePath] -> FilePath) -> Routes modifyDirRoute f = customRoute $ f . splitDirectories . toFilePath modifyDirRoute_ :: ([FilePath] -> [FilePath]) -> Routes modifyDirRoute_ f = modifyDirRoute $ joinPath . f -- | General contramap transformContext :: (Item b -> Compiler (Item a)) -> Context a -> Context b transformContext f (Context c) = Context $ \n args itm -> c n args =<< f itm -- | Slightly more general contramap transformContext_ :: (b -> Compiler a) -> Context a -> Context b transformContext_ = transformContext . traverse