From 6b5302e063de7fcaddde69c74dac9c3841db1c24 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sun, 13 Jan 2013 12:34:18 -0800 Subject: Markdown reader: Support RST-style line blocks. This depends on the new Ext_line_blocks extension. --- src/Text/Pandoc/Options.hs | 2 ++ src/Text/Pandoc/Readers/Markdown.hs | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src/Text') diff --git a/src/Text/Pandoc/Options.hs b/src/Text/Pandoc/Options.hs index 35d1a2173..ae2afd6fc 100644 --- a/src/Text/Pandoc/Options.hs +++ b/src/Text/Pandoc/Options.hs @@ -95,6 +95,7 @@ data Extension = | Ext_auto_identifiers -- ^ Automatic identifiers for headers | Ext_header_attributes -- ^ Explicit header attributes {#id .class k=v} | Ext_implicit_header_references -- ^ Implicit reference links for headers + | Ext_line_blocks -- ^ RST style line blocks deriving (Show, Read, Enum, Eq, Ord, Bounded) pandocExtensions :: Set Extension @@ -134,6 +135,7 @@ pandocExtensions = Set.fromList , Ext_auto_identifiers , Ext_header_attributes , Ext_implicit_header_references + , Ext_line_blocks ] phpMarkdownExtraExtensions :: Set Extension diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 37f12c2e0..e454fd58d 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -31,7 +31,7 @@ Conversion of markdown-formatted plain text to 'Pandoc' document. module Text.Pandoc.Readers.Markdown ( readMarkdown, readMarkdownWithWarnings ) where -import Data.List ( transpose, sortBy, findIndex, intercalate ) +import Data.List ( transpose, sortBy, findIndex, intersperse, intercalate ) import qualified Data.Map as M import Data.Ord ( comparing ) import Data.Char ( isAlphaNum, toLower ) @@ -350,6 +350,7 @@ block = choice [ codeBlockFenced , header , rawTeXBlock , htmlBlock + , lineBlock , table , codeBlockIndented , lhsCodeBlock @@ -868,6 +869,17 @@ stripMarkdownAttribute s = renderTags' $ map filterAttrib $ parseTags s [(k,v) | (k,v) <- as, k /= "markdown"] filterAttrib x = x +-- +-- line block +-- + +lineBlock :: MarkdownParser (F Blocks) +lineBlock = try $ do + guardEnabled Ext_line_blocks + lines' <- lineBlockLines >>= + mapM (parseFromString (trimInlinesF . mconcat <$> many inline)) + return $ B.para <$> (mconcat $ intersperse (return B.linebreak) lines') + -- -- Tables -- -- cgit v1.2.3