From 292d2bd38dafdfb4a8837b334adc2174c9501169 Mon Sep 17 00:00:00 2001
From: fiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b>
Date: Thu, 3 May 2007 14:44:04 +0000
Subject: [PATCH] Added support for definition lists to markdown writer.

git-svn-id: https://pandoc.googlecode.com/svn/trunk@591 788f1e2b-df1e-0410-8736-df70ead52e1b
---
 src/Text/Pandoc/Writers/Markdown.hs | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs
index 8f1b3cea9..7f46e8097 100644
--- a/src/Text/Pandoc/Writers/Markdown.hs
+++ b/src/Text/Pandoc/Writers/Markdown.hs
@@ -163,6 +163,9 @@ blockToMarkdown opts (OrderedList items) = do
   contents <- mapM (\(item, num) -> orderedListItemToMarkdown opts item num) $
               zip [1..] items  
   return $ (vcat contents) <> text "\n"
+blockToMarkdown opts (DefinitionList items) = do
+  contents <- mapM (definitionListItemToMarkdown opts) items
+  return $ (vcat contents) <> text "\n"
 
 -- | Convert bullet list item (list of blocks) to markdown.
 bulletListItemToMarkdown :: WriterOptions -> [Block] -> State WriterState Doc
@@ -181,6 +184,17 @@ orderedListItemToMarkdown opts num items = do
   return $ hang (text ((show num) ++ "." ++ spacer)) (writerTabStop opts)
            contents 
 
+-- | Convert definition list item (label, list of blocks) to markdown.
+definitionListItemToMarkdown :: WriterOptions
+                             -> ([Inline],[Block]) 
+                             -> State WriterState Doc
+definitionListItemToMarkdown opts (label, items) = do
+  labelText <- inlineListToMarkdown opts label
+  contents <- mapM (\item -> blockToMarkdown opts item >>= 
+              (return . hang (text ":  ") (writerTabStop opts)))
+              items >>= (return . vcat)
+  return $ labelText $+$ contents
+
 -- | Convert list of Pandoc block elements to markdown.
 blockListToMarkdown :: WriterOptions -- ^ Options
                     -> [Block]       -- ^ List of block elements