diff options
author | John MacFarlane <fiddlosopher@gmail.com> | 2013-01-21 09:50:39 -0800 |
---|---|---|
committer | John MacFarlane <fiddlosopher@gmail.com> | 2013-01-21 09:52:24 -0800 |
commit | af849537819885694cc4487056721480ab21067d (patch) | |
tree | 0a1ed38c3413ed71c9218759e4bb89c2969acf22 | |
parent | c4b93bc3e7ea2006dbe3273ed06b66129775982e (diff) | |
download | pandoc-af849537819885694cc4487056721480ab21067d.tar.gz |
Markdown reader: Fixed bug with headerless grid tables.
The 1.10 code assumed that each table header cell contains
exactly one block. That failed for headerless tables (0) and also
for tables with multiple blocks in a header cell.
The code is fixed and tests provided. Thanks to Andrew Lee for
pointing out the bug.
-rw-r--r-- | src/Text/Pandoc/Readers/Markdown.hs | 4 | ||||
-rw-r--r-- | tests/markdown-reader-more.native | 53 | ||||
-rw-r--r-- | tests/markdown-reader-more.txt | 39 |
3 files changed, 93 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 1f57d1918..2c6c47307 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -1110,7 +1110,7 @@ gridTableHeader headless = try $ do then replicate (length dashes) "" else map (intercalate " ") $ transpose $ map (gridTableSplitLine indices) rawContent - heads <- fmap sequence $ mapM (parseFromString block) $ + heads <- fmap sequence $ mapM (parseFromString parseBlocks) $ map trim rawHeads return (heads, aligns, indices) @@ -1127,7 +1127,7 @@ gridTableRow indices = do colLines <- many1 (gridTableRawLine indices) let cols = map ((++ "\n") . unlines . removeOneLeadingSpace) $ transpose colLines - fmap compactify' <$> fmap sequence (mapM (parseFromString block) cols) + fmap compactify' <$> fmap sequence (mapM (parseFromString parseBlocks) cols) removeOneLeadingSpace :: [String] -> [String] removeOneLeadingSpace xs = diff --git a/tests/markdown-reader-more.native b/tests/markdown-reader-more.native index e76b12918..382aa056c 100644 --- a/tests/markdown-reader-more.native +++ b/tests/markdown-reader-more.native @@ -67,4 +67,55 @@ ,Header 2 ("foobar",["baz"],[("key","val")]) [Str "Explicit",Space,Str "header",Space,Str "attributes"] ,Header 2 ("line-blocks",[],[]) [Str "Line",Space,Str "blocks"] ,Para [Str "But",Space,Str "can",Space,Str "a",Space,Str "bee",Space,Str "be",Space,Str "said",Space,Str "to",Space,Str "be",LineBreak,Str "\160\160\160\160or",Space,Str "not",Space,Str "to",Space,Str "be",Space,Str "an",Space,Str "entire",Space,Str "bee,",LineBreak,Str "\160\160\160\160\160\160\160\160when",Space,Str "half",Space,Str "the",Space,Str "bee",Space,Str "is",Space,Str "not",Space,Str "a",Space,Str "bee,",LineBreak,Str "\160\160\160\160\160\160\160\160\160\160\160\160due",Space,Str "to",Space,Str "some",Space,Str "ancient",Space,Str "injury?"] -,Para [Str "Continuation",Space,Str "line",LineBreak,Str "\160\160and",Space,Str "another"]] +,Para [Str "Continuation",Space,Str "line",LineBreak,Str "\160\160and",Space,Str "another"] +,Header 2 ("grid-tables",[],[]) [Str "Grid",Space,Str "Tables"] +,Table [] [AlignDefault,AlignDefault,AlignDefault] [0.2638888888888889,0.16666666666666666,0.18055555555555555] + [[Plain [Str "col",Space,Str "1"]] + ,[Plain [Str "col",Space,Str "2"]] + ,[Plain [Str "col",Space,Str "3"]]] + [[[Para [Str "r1",Space,Str "a",Space,Str "r1",Space,Str "bis"]] + ,[Para [Str "b",Space,Str "b",Space,Str "2"]] + ,[Para [Str "c",Space,Str "c",Space,Str "2"]]] + ,[[Para [Str "r2",Space,Str "d"]] + ,[Para [Str "e"]] + ,[Para [Str "f"]]]] +,Para [Str "Headless"] +,Table [] [AlignDefault,AlignDefault,AlignDefault] [0.2638888888888889,0.16666666666666666,0.18055555555555555] + [[] + ,[] + ,[]] + [[[Para [Str "r1",Space,Str "a",Space,Str "r1",Space,Str "bis"]] + ,[Para [Str "b",Space,Str "b",Space,Str "2"]] + ,[Para [Str "c",Space,Str "c",Space,Str "2"]]] + ,[[Para [Str "r2",Space,Str "d"]] + ,[Para [Str "e"]] + ,[Para [Str "f"]]]] +,Para [Str "Spaces",Space,Str "at",Space,Str "ends",Space,Str "of",Space,Str "lines"] +,Table [] [AlignDefault,AlignDefault,AlignDefault] [0.2638888888888889,0.16666666666666666,0.18055555555555555] + [[] + ,[] + ,[]] + [[[Para [Str "r1",Space,Str "a",Space,Str "r1",Space,Str "bis"]] + ,[Para [Str "b",Space,Str "b",Space,Str "2"]] + ,[Para [Str "c",Space,Str "c",Space,Str "2"]]] + ,[[Para [Str "r2",Space,Str "d"]] + ,[Para [Str "e"]] + ,[Para [Str "f"]]]] +,Para [Str "Multiple",Space,Str "blocks",Space,Str "in",Space,Str "a",Space,Str "cell"] +,Table [] [AlignDefault,AlignDefault,AlignDefault] [0.2638888888888889,0.16666666666666666,0.18055555555555555] + [[] + ,[] + ,[]] + [[[Header 1 ("col-1",[],[]) [Str "col",Space,Str "1"] + ,Para [Str "col",Space,Str "1"]] + ,[Header 1 ("col-2",[],[]) [Str "col",Space,Str "2"] + ,Para [Str "col",Space,Str "2"]] + ,[Header 1 ("col-3",[],[]) [Str "col",Space,Str "3"] + ,Para [Str "col",Space,Str "3"]]] + ,[[Para [Str "r1",Space,Str "a"] + ,Para [Str "r1",Space,Str "bis"]] + ,[BulletList + [[Plain [Str "b"]] + ,[Plain [Str "b",Space,Str "2"]] + ,[Plain [Str "b",Space,Str "2"]]]] + ,[Para [Str "c",Space,Str "c",Space,Str "2",Space,Str "c",Space,Str "2"]]]]] diff --git a/tests/markdown-reader-more.txt b/tests/markdown-reader-more.txt index b8ff74f26..b76b6d985 100644 --- a/tests/markdown-reader-more.txt +++ b/tests/markdown-reader-more.txt @@ -162,3 +162,42 @@ But this is not a link to [My other header], since the reference is defined. | and another +## Grid Tables + ++------------------+-----------+------------+ +| col 1 | col 2 | col 3 | ++==================+===========+============+ +| r1 a | b | c | +| r1 bis | b 2 | c 2 | ++------------------+-----------+------------+ +| r2 d | e | f | ++------------------+-----------+------------+ + +Headless + ++------------------+-----------+------------+ +| r1 a | b | c | +| r1 bis | b 2 | c 2 | ++------------------+-----------+------------+ +| r2 d | e | f | ++------------------+-----------+------------+ + +Spaces at ends of lines + ++------------------+-----------+------------+ +| r1 a | b | c | +| r1 bis | b 2 | c 2 | ++------------------+-----------+------------+ +| r2 d | e | f | ++------------------+-----------+------------+ + +Multiple blocks in a cell + ++------------------+-----------+------------+ +| # col 1 | # col 2 | # col 3 | +| col 1 | col 2 | col 3 | ++------------------+-----------+------------+ +| r1 a | - b | c | +| | - b 2 | c 2 | +| r1 bis | - b 2 | c 2 | ++------------------+-----------+------------+ |