global metadata
This commit is contained in:
		
							parent
							
								
									0ab1096409
								
							
						
					
					
						commit
						8cb15d3960
					
				
							
								
								
									
										15
									
								
								site.hs
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								site.hs
									
									
									
									
									
								
							| 
						 | 
					@ -151,6 +151,12 @@ checkedSubstitute t v = do
 | 
				
			||||||
  --null es `unless` error "template substitution problems"
 | 
					  --null es `unless` error "template substitution problems"
 | 
				
			||||||
  pure txt
 | 
					  pure txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- | Add global information to page metadata for rendering (at this point just the url base)
 | 
				
			||||||
 | 
					addGlobalMeta :: Y.Value -> Site Y.Value
 | 
				
			||||||
 | 
					addGlobalMeta (Y.Object m) = do
 | 
				
			||||||
 | 
					  r <- fromString <$> use urlBase
 | 
				
			||||||
 | 
					  pure . Y.Object $ KM.insert "root" r 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
 | 
				
			||||||
| 
						 | 
					@ -160,12 +166,13 @@ installPage mount pi = do
 | 
				
			||||||
  fixedUrlDoc <-
 | 
					  fixedUrlDoc <-
 | 
				
			||||||
    walkURLs (processLink $ pi ^. pagePath . to takeDirectory) $ pi ^. pageDoc
 | 
					    walkURLs (processLink $ pi ^. pagePath . to takeDirectory) $ pi ^. pageDoc
 | 
				
			||||||
  checkTarget file
 | 
					  checkTarget file
 | 
				
			||||||
 | 
					  body <- io . runIOorExplode $ writeHtml5String htmlWriteOpts fixedUrlDoc
 | 
				
			||||||
 | 
					  let Y.Object meta' = pi ^. pageMeta
 | 
				
			||||||
 | 
					      meta = Y.Object $ KM.insert "body" (Y.String body) meta'
 | 
				
			||||||
 | 
					  meta <- addGlobalMeta meta
 | 
				
			||||||
  io $ do
 | 
					  io $ do
 | 
				
			||||||
    putStrLn $ "P -> " ++ file
 | 
					    putStrLn $ "P -> " ++ file
 | 
				
			||||||
    makeDirectories file
 | 
					    makeDirectories file
 | 
				
			||||||
    body <- runIOorExplode $ writeHtml5String htmlWriteOpts fixedUrlDoc
 | 
					 | 
				
			||||||
    let Y.Object meta' = pi ^. pageMeta
 | 
					 | 
				
			||||||
        meta = Y.Object $ KM.insert "body" (Y.String body) meta'
 | 
					 | 
				
			||||||
    checkedSubstitute templ meta >>= TIO.writeFile file
 | 
					    checkedSubstitute templ meta >>= TIO.writeFile file
 | 
				
			||||||
  installPageRedirects mount pi
 | 
					  installPageRedirects mount pi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -301,7 +308,7 @@ makeTagMeta tag = do
 | 
				
			||||||
  htagMeta <- makeHTagMeta tag
 | 
					  htagMeta <- makeHTagMeta tag
 | 
				
			||||||
  subtagsMeta <- Y.array <$> traverse makeHTagLinkMeta subtags
 | 
					  subtagsMeta <- Y.array <$> traverse makeHTagLinkMeta subtags
 | 
				
			||||||
  pagesMeta <- Y.array <$> traverse makePageLinkMeta taggedPages
 | 
					  pagesMeta <- Y.array <$> traverse makePageLinkMeta taggedPages
 | 
				
			||||||
  pure $
 | 
					  addGlobalMeta $
 | 
				
			||||||
    Y.object
 | 
					    Y.object
 | 
				
			||||||
      [("htag", htagMeta), ("subtags", subtagsMeta), ("pages", pagesMeta)]
 | 
					      [("htag", htagMeta), ("subtags", subtagsMeta), ("pages", pagesMeta)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,6 @@
 | 
				
			||||||
    All cards {{#htag}} » {{tag}}{{/htag}}
 | 
					    All cards {{#htag}} » {{tag}}{{/htag}}
 | 
				
			||||||
  {{/htag}}
 | 
					  {{/htag}}
 | 
				
			||||||
  </title>
 | 
					  </title>
 | 
				
			||||||
  <link rel="stylesheet" href="{{root}}/style.css" />
 | 
					  <link rel="stylesheet" href="{{root}}style.css" />
 | 
				
			||||||
  <link rel="stylesheet" href="{{root}}/fonts.css" />
 | 
					  <link rel="stylesheet" href="{{root}}fonts.css" />
 | 
				
			||||||
</head>
 | 
					</head>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue