hakyll-std/TableOfContents: pandoc is monadified, must use runPure and fix error messages/imports
				
					
				
			This commit is contained in:
		
							parent
							
								
									5fc59811a0
								
							
						
					
					
						commit
						aedca6dab1
					
				| @ -12,6 +12,7 @@ module TableOfContents ( | |||||||
| 
 | 
 | ||||||
| import Text.Pandoc | import Text.Pandoc | ||||||
| import Text.Pandoc.Walk (walk, query) | import Text.Pandoc.Walk (walk, query) | ||||||
|  | import Text.Pandoc.Class (runPure) | ||||||
| 
 | 
 | ||||||
| import Data.List (groupBy) | import Data.List (groupBy) | ||||||
| import Data.Text (unpack) | import Data.Text (unpack) | ||||||
| @ -21,6 +22,7 @@ import Data.Monoid ((<>), mconcat) | |||||||
| #endif | #endif | ||||||
| import Data.Function (on) | import Data.Function (on) | ||||||
| import Data.Maybe (fromMaybe) | import Data.Maybe (fromMaybe) | ||||||
|  | import Data.Text (unpack) | ||||||
| 
 | 
 | ||||||
| import Text.Blaze.Html (preEscapedToHtml, (!)) | import Text.Blaze.Html (preEscapedToHtml, (!)) | ||||||
| import Text.Blaze.Html.Renderer.String (renderHtml) | import Text.Blaze.Html.Renderer.String (renderHtml) | ||||||
| @ -51,13 +53,17 @@ groupByHierarchy :: [Block] -> Forest Block | |||||||
| groupByHierarchy = map (\(x:xs) -> Node x (groupByHierarchy xs)) . groupBy ((<) `on` headerLevel) | groupByHierarchy = map (\(x:xs) -> Node x (groupByHierarchy xs)) . groupBy ((<) `on` headerLevel) | ||||||
| 
 | 
 | ||||||
| markupHeader :: Tree Block -> H.Html | markupHeader :: Tree Block -> H.Html | ||||||
| markupHeader (Node (Header _ (ident, _, keyvals) inline) headers) | markupHeader n@(Node (Header _ (ident, _, keyvals) inline) headers) | ||||||
|   | headers == [] = H.li $ link |   | headers == [] = H.li $ link | ||||||
|   | otherwise     = H.li $ link <> (H.ol $ markupHeaders headers) |   | otherwise     = H.li $ link <> (H.ol $ markupHeaders headers) | ||||||
|   where render x  = writeHtml5String def (Pandoc nullMeta [(Plain x)]) |   where render x  = case runPure $ writeHtml5String def (Pandoc nullMeta [(Plain x)]) of | ||||||
|         section   = fromMaybe (render inline) (lookup "toc" keyvals) |                         Left  _   -> error $    "Error building header.\n" | ||||||
|         link      = H.a ! A.href (H.toValue $ "#" ++ ident) $ preEscapedToHtml $ unpack section |                                              ++ "   saw: " ++ show n | ||||||
| markupHeader _ = error "what" |                         Right txt -> txt | ||||||
|  |         section   = fromMaybe (unpack $ render inline) (lookup "toc" keyvals) | ||||||
|  |         link      = H.a ! A.href (H.toValue $ "#" ++ ident) $ preEscapedToHtml section | ||||||
|  | markupHeader n = error $    "'markupHeader' should only be passed a 'Node $ Header'\n" | ||||||
|  |                          ++ "    saw: " ++ show n | ||||||
| 
 | 
 | ||||||
| markupHeaders :: Forest Block -> H.Html | markupHeaders :: Forest Block -> H.Html | ||||||
| markupHeaders = mconcat . map markupHeader | markupHeaders = mconcat . map markupHeader | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user