@@ -25,9 +25,9 @@ import Data.List (intercalate)
2525import Control.Monad (foldM)
2626import Control.Arrow (second)
2727import Control.Applicative ((<$>))
28−import System.FilePath ((</>))
28+import System.FilePath
2929
30−import Text.Hakyll.Hakyll (Hakyll)
30+import Text.Hakyll.Hakyll
3131import Text.Hakyll.Context (ContextManipulation, changeValue)
3232import Text.Hakyll.Regex
3333import Text.Hakyll.Util
@@ -55,8 +55,13 @@ readTagMap identifier paths = do
5555 readTagMap' = foldM addPaths M.empty paths
5656 addPaths current path = do
5757 page <- readPage path
58+ categoriesEnabled <- askHakyll enableCategories
5859 let tags = map trim $ splitRegex "," $ getValue "tags" page
59− return $ foldr (flip (M.insertWith (++)) [path]) current tags
60+ category = [getCategory path | categoriesEnabled]
61+ addPaths' = flip (M.insertWith (++)) [path]
62+ return $ foldr addPaths' current (category ++ tags)
63+
64+ getCategory = last . splitDirectories . takeDirectory
6065
6166-- | Render a tag cloud.
6267renderTagCloud :: M.Map String [FilePath] -- ^ Map as produced by @readTagMap@.