From 0356ad4de6f19b3804b8a635e8ce8a5582ac2c5c Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Fri, 3 Dec 2010 22:42:18 -0800 Subject: Textile reader: drop leading, trailing newline in pre block. This is consistent with how the other readers work. --- src/Text/Pandoc/Readers/Textile.hs | 12 ++++++++++-- tests/textile-reader.native | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/Text/Pandoc/Readers/Textile.hs b/src/Text/Pandoc/Readers/Textile.hs index 52eebd07f..3465eebbe 100644 --- a/src/Text/Pandoc/Readers/Textile.hs +++ b/src/Text/Pandoc/Readers/Textile.hs @@ -120,8 +120,16 @@ block = choice blockParsers "block" codeBlock :: GenParser Char ParserState Block codeBlock = try $ do htmlTag False "pre" - content <- manyTill anyChar (try $ htmlEndTag "pre" >> blockBreak) - return $ CodeBlock ("",[],[]) content + result' <- manyTill anyChar (try $ htmlEndTag "pre" >> blockBreak) + -- drop leading newline if any + let result'' = case result' of + '\n':xs -> xs + _ -> result' + -- drop trailing newline if any + let result''' = case reverse result'' of + '\n':_ -> init result'' + _ -> result'' + return $ CodeBlock ("",[],[]) result''' -- | Header of the form "hN. content" with N in 1..6 header :: GenParser Char ParserState Block diff --git a/tests/textile-reader.native b/tests/textile-reader.native index 999521942..130866a37 100644 --- a/tests/textile-reader.native +++ b/tests/textile-reader.native @@ -23,9 +23,9 @@ Pandoc (Meta {docTitle = [Str ""], docAuthors = [[Str ""]], docDate = [Str ""]}) , Para [Str "And",Space,Str "a",Space,Str "following",Space,Str "paragraph",Str "."] , Header 1 [Str "Code",Space,Str "Blocks"] , Para [Str "Code",Str ":"] -, CodeBlock ("",[],[]) "\n ---- (should be four hyphens)\n\n sub status {\n print \"working\";\n }\n\n this code block is indented by one tab\n" +, CodeBlock ("",[],[]) " ---- (should be four hyphens)\n\n sub status {\n print \"working\";\n }\n\n this code block is indented by one tab" , Para [Str "And",Str ":"] -, CodeBlock ("",[],[]) "\n this code block is indented by two tabs\n\n These should not be escaped: \\$ \\\\ \\> \\[ \\{\n" +, CodeBlock ("",[],[]) " this code block is indented by two tabs\n\n These should not be escaped: \\$ \\\\ \\> \\[ \\{" , Header 1 [Str "Lists"] , Header 2 [Str "Unordered"] , Para [Str "Asterisks",Space,Str "tight",Str ":"] -- cgit v1.2.3