@@ -195,18 +195,18 @@ escapeString = escapeStringUsing markdownEscapes
195tableOfContents :: WriterOptions -> [Block] -> Doc
195tableOfContents :: WriterOptions -> [Block] -> Doc
196tableOfContents opts headers =
196tableOfContents opts headers =
197 let opts' = opts { writerIgnoreNotes = True }
197 let opts' = opts { writerIgnoreNotes = True }
198− contents = BulletList $ map elementToListItem $ hierarchicalize headers
198+ contents = BulletList $ map (elementToListItem opts) $ hierarchicalize headers
199 in evalState (blockToMarkdown opts' contents) WriterState{ stNotes = []
199 in evalState (blockToMarkdown opts' contents) WriterState{ stNotes = []
200 , stRefs = []
200 , stRefs = []
201 , stPlain = False }
201 , stPlain = False }
203-- | Converts an Element to a list item for a table of contents,
203-- | Converts an Element to a list item for a table of contents,
204−elementToListItem :: Element -> [Block]
204+elementToListItem :: WriterOptions -> Element -> [Block]
205−elementToListItem (Blk _) = []
205+elementToListItem opts (Sec lev _ _ headerText subsecs)
206−elementToListItem (Sec _ _ _ headerText subsecs) = [Plain headerText] ++
206+ = Plain headerText :
209− else [BulletList $ map elementToListItem subsecs]
207+ [ BulletList (map (elementToListItem opts) subsecs) |
208+ not (null subsecs) && lev < writerTOCDepth opts ]
209+elementToListItem _ (Blk _) = []
211attrsToMarkdown :: Attr -> Doc
211attrsToMarkdown :: Attr -> Doc
212attrsToMarkdown attribs = braces $ hsep [attribId, attribClasses, attribKeys]
212attrsToMarkdown attribs = braces $ hsep [attribId, attribClasses, attribKeys]