From ea3eaaa55356d2f799c1ab5a96f9658e8ceaca97 Mon Sep 17 00:00:00 2001
From: John MacFarlane <fiddlosopher@gmail.com>
Date: Sat, 5 Jan 2013 12:31:15 -0800
Subject: [PATCH] Implemented --toc-depth for markdown writer.

---
 src/Text/Pandoc/Writers/Markdown.hs | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs
index 9bc7cab6a..234a9cc76 100644
--- a/src/Text/Pandoc/Writers/Markdown.hs
+++ b/src/Text/Pandoc/Writers/Markdown.hs
@@ -195,18 +195,18 @@ escapeString = escapeStringUsing markdownEscapes
 tableOfContents :: WriterOptions -> [Block] -> Doc
 tableOfContents opts headers =
   let opts' = opts { writerIgnoreNotes = True }
-      contents = BulletList $ map elementToListItem $ hierarchicalize headers
+      contents = BulletList $ map (elementToListItem opts) $ hierarchicalize headers
   in  evalState (blockToMarkdown opts' contents) WriterState{ stNotes = []
                                                             , stRefs  = []
                                                             , stPlain = False }
 
 -- | Converts an Element to a list item for a table of contents,
-elementToListItem :: Element -> [Block]
-elementToListItem (Blk _) = []
-elementToListItem (Sec _ _ _ headerText subsecs) = [Plain headerText] ++
-  if null subsecs
-     then []
-     else [BulletList $ map elementToListItem subsecs]
+elementToListItem :: WriterOptions -> Element -> [Block]
+elementToListItem opts (Sec lev _ _ headerText subsecs)
+  = Plain headerText :
+    [ BulletList (map (elementToListItem opts) subsecs) |
+      not (null subsecs) && lev < writerTOCDepth opts ]
+elementToListItem _ (Blk _) = []
 
 attrsToMarkdown :: Attr -> Doc
 attrsToMarkdown attribs = braces $ hsep [attribId, attribClasses, attribKeys]