blob: 35169fa34b3c70b03355cc88c6100a3e23189c49 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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
|