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">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,19 +16,19 @@
 | 
				
			||||||
{{^htag}}All cards{{/htag}}
 | 
					{{^htag}}All cards{{/htag}}
 | 
				
			||||||
</h1>
 | 
					</h1>
 | 
				
			||||||
{{?subtags}}<h2>Sub-categories</h2>
 | 
					{{?subtags}}<h2>Sub-categories</h2>
 | 
				
			||||||
<ul class="cards-subcategories">
 | 
					  <ul class="cards-subcategories">
 | 
				
			||||||
{{#subtags}}
 | 
					  {{#subtags}}
 | 
				
			||||||
<li><a href="{{href}}">{{#tags}} » {{.}} {{/tags}}</a></li>
 | 
					  <li><a href="{{href}}">{{#tags}} » {{.}} {{/tags}}</a></li>
 | 
				
			||||||
{{/subtags}}
 | 
					  {{/subtags}}
 | 
				
			||||||
</ul>
 | 
					  </ul>
 | 
				
			||||||
{{/subtags}}
 | 
					{{/subtags}}
 | 
				
			||||||
{{?pages}}
 | 
					{{?pages}}
 | 
				
			||||||
<h2>Cards</h2>
 | 
					  <h2>Cards</h2>
 | 
				
			||||||
<ul class="cards-list">
 | 
					  <ul class="cards-list">
 | 
				
			||||||
{{#pages}}
 | 
					  {{#pages}}
 | 
				
			||||||
<li><a href="{{href}}">{{meta.title}}</a></li>
 | 
					  <li><a href="{{href}}">{{meta.title}}</a></li>
 | 
				
			||||||
{{/pages}}
 | 
					  {{/pages}}
 | 
				
			||||||
</ul>
 | 
					  </ul>
 | 
				
			||||||
{{/pages}}
 | 
					{{/pages}}
 | 
				
			||||||
{{> footer.html}}
 | 
					{{> footer.html}}
 | 
				
			||||||
</body>
 | 
					</body>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue