make the tagging work properly
This commit is contained in:
parent
4026a2e245
commit
4c0efd5c0e
|
@ -84,6 +84,15 @@ h6 {
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sidebox ol {
|
||||||
|
padding-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebox ul {
|
||||||
|
padding-left: 0em;
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
/* layout */
|
/* layout */
|
||||||
|
|
||||||
header {
|
header {
|
||||||
|
|
16
site.hs
16
site.hs
|
@ -10,7 +10,7 @@ import qualified Data.Aeson.KeyMap as KM
|
||||||
import qualified Data.ByteString.Lazy as B
|
import qualified Data.ByteString.Lazy as B
|
||||||
import Data.Digest.Pure.SHA (sha256, showDigest)
|
import Data.Digest.Pure.SHA (sha256, showDigest)
|
||||||
import Data.Foldable (traverse_)
|
import Data.Foldable (traverse_)
|
||||||
import Data.List (inits, nub)
|
import Data.List (inits, nub, sort)
|
||||||
import Data.List.Extra (groupSort)
|
import Data.List.Extra (groupSort)
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
import qualified Data.Set as S
|
import qualified Data.Set as S
|
||||||
|
@ -157,6 +157,18 @@ addGlobalMeta (Y.Object m) = do
|
||||||
r <- fromString <$> use urlBase
|
r <- fromString <$> use urlBase
|
||||||
pure . Y.Object $ KM.insert "root" r m
|
pure . Y.Object $ KM.insert "root" r m
|
||||||
|
|
||||||
|
-- | Add page-specific information to the metadata. In this instance, this just
|
||||||
|
-- expands the tags for rendering. Eventually would be nice to have the timestamps
|
||||||
|
-- and possibly other info sourced right here.
|
||||||
|
addPageMeta :: PageInfo -> Y.Value -> Site Y.Value
|
||||||
|
addPageMeta pi (Y.Object m) = do
|
||||||
|
htagMeta <-
|
||||||
|
traverse makeHTagMeta . sort $ pi ^.. pageMeta . key "tags" . values .
|
||||||
|
_String .
|
||||||
|
to T.unpack .
|
||||||
|
to splitDirectories
|
||||||
|
pure . Y.Object $ KM.insert "htags" (Y.array htagMeta) m
|
||||||
|
|
||||||
-- | Render a page using the current template.
|
-- | Render a page using the current template.
|
||||||
installPage :: FilePath -> PageInfo -> Site ()
|
installPage :: FilePath -> PageInfo -> Site ()
|
||||||
installPage mount pi = do
|
installPage mount pi = do
|
||||||
|
@ -169,7 +181,7 @@ installPage mount pi = do
|
||||||
body <- io . runIOorExplode $ writeHtml5String htmlWriteOpts fixedUrlDoc
|
body <- io . runIOorExplode $ writeHtml5String htmlWriteOpts fixedUrlDoc
|
||||||
let Y.Object meta' = pi ^. pageMeta
|
let Y.Object meta' = pi ^. pageMeta
|
||||||
meta = Y.Object $ KM.insert "body" (Y.String body) meta'
|
meta = Y.Object $ KM.insert "body" (Y.String body) meta'
|
||||||
meta <- addGlobalMeta meta
|
meta <- addGlobalMeta meta >>= addPageMeta pi
|
||||||
io $ do
|
io $ do
|
||||||
putStrLn $ "P -> " ++ file
|
putStrLn $ "P -> " ++ file
|
||||||
makeDirectories file
|
makeDirectories file
|
||||||
|
|
|
@ -23,17 +23,17 @@
|
||||||
<div class="flex-sidefill-l"></div>
|
<div class="flex-sidefill-l"></div>
|
||||||
<div class="content-holder">
|
<div class="content-holder">
|
||||||
<div class="sidebox">
|
<div class="sidebox">
|
||||||
|
{{?htags}}
|
||||||
<div class="sidebar-header">
|
<div class="sidebar-header">
|
||||||
Page categories
|
Page categories
|
||||||
</div>
|
</div>
|
||||||
<div class="sidebar-values">
|
<div class="sidebar-values">
|
||||||
a → b → c
|
<ul>
|
||||||
</div>
|
{{#htags}}
|
||||||
<div class="sidebar-header">
|
<li>{{#.}}<a href="{{href}}">{{^tag}}all{{/tag}}{{?tag}} » {{tag}}{{/tag}}{{/.}}</a></li>
|
||||||
Last modification
|
{{/htags}}
|
||||||
</div>
|
</ul>
|
||||||
<div class="sidebar-values">
|
|
||||||
January 2023
|
|
||||||
</div>
|
</div>
|
||||||
|
{{/htags}}
|
||||||
</div>
|
</div>
|
||||||
<div class="content width-content">
|
<div class="content width-content">
|
||||||
|
|
Loading…
Reference in a new issue