@@ -25,9 +25,9 @@ import Data.List (intercalate)
25import Control.Monad (foldM)
25import Control.Monad (foldM)
26import Control.Arrow (second)
26import Control.Arrow (second)
27import Control.Applicative ((<$>))
27import Control.Applicative ((<$>))
28−import System.FilePath ((</>))
28+import System.FilePath
30−import Text.Hakyll.Hakyll (Hakyll)
30+import Text.Hakyll.Hakyll
31import Text.Hakyll.Context (ContextManipulation, changeValue)
31import Text.Hakyll.Context (ContextManipulation, changeValue)
32import Text.Hakyll.Regex
32import Text.Hakyll.Regex
33import Text.Hakyll.Util
33import Text.Hakyll.Util
@@ -55,8 +55,13 @@ readTagMap identifier paths = do
55 readTagMap' = foldM addPaths M.empty paths
55 readTagMap' = foldM addPaths M.empty paths
56 addPaths current path = do
56 addPaths current path = do
57 page <- readPage path
57 page <- readPage path
58+ categoriesEnabled <- askHakyll enableCategories
58 let tags = map trim $ splitRegex "," $ getValue "tags" page
59 let tags = map trim $ splitRegex "," $ getValue "tags" page
60+ category = [getCategory path | categoriesEnabled]
61+ addPaths' = flip (M.insertWith (++)) [path]
59− return $ foldr (flip (M.insertWith (++)) [path]) current tags
62+ return $ foldr addPaths' current (category ++ tags)
64+ getCategory = last . splitDirectories . takeDirectory
61-- | Render a tag cloud.
66-- | Render a tag cloud.
62renderTagCloud :: M.Map String [FilePath] -- ^ Map as produced by @readTagMap@.
67renderTagCloud :: M.Map String [FilePath] -- ^ Map as produced by @readTagMap@.