hakyll-std/TableOfContents: all rendering done with Pandoc instead of Blaze
This commit is contained in:
		
							parent
							
								
									760f520fef
								
							
						
					
					
						commit
						9c99dcde39
					
				| @ -18,7 +18,6 @@ import Text.Pandoc.Options (def) | ||||
| 
 | ||||
| import Data.Either (fromRight) | ||||
| import Data.List (groupBy) | ||||
| import Data.Text (unpack) | ||||
| import Data.Tree (Forest, Tree(Node)) | ||||
| #if !(MIN_VERSION_base(4,11,0)) | ||||
| import Data.Monoid ((<>), mconcat) | ||||
| @ -72,13 +71,14 @@ markupHeaders = OrderedList (1, Decimal, Period) . map markupHeader | ||||
| createTable :: TOCAlignment -> Forest Block -> Block | ||||
| createTable _ [] = Null | ||||
| createTable alignment headers | ||||
|     = render $ (H.nav ! (A.id "toc" <> alignmentAttr)) $ do | ||||
|             H.p "Contents" | ||||
|             fromRight mempty . runPure . writeHtml5 def $ Pandoc nullMeta [markupHeaders headers] | ||||
|   where render = (RawBlock "html") . renderHtml | ||||
|         alignmentAttr = case alignment of | ||||
|                            TOCRight -> A.class_ "right-toc" | ||||
|                            _        -> mempty | ||||
|     = let alignAttr = case alignment of | ||||
|                         TOCRight -> " class=\"right-toc\"" | ||||
|                         _        -> "" | ||||
|           navBegin  = "<nav id=\"toc\"" ++ alignAttr ++ ">" | ||||
|           navEnd    = "</nav>" | ||||
|           tocDoc    = Pandoc nullMeta [Para [Str "Contents"], markupHeaders headers] | ||||
|           tocString = unpack . fromRight mempty . runPure . writeHtml5String def $ tocDoc | ||||
|        in RawBlock "html" (navBegin ++ "\n" ++ tocString ++ "\n" ++ navEnd) | ||||
| 
 | ||||
| generateTOC :: [Block] -> TOCAlignment -> Block -> Block | ||||
| generateTOC headers alignment x@(BulletList (( (( Plain ((Str "toc"):_)):_)):_)) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user