git.iko.soy/typeable/pandoc
on master help sign in
Markdown writer: use raw HTML for simple, pipe tables with linebreaks.
139d418John MacFarlane
src/Text/Pandoc/Writers/Markdown.hs+5−1
@@ -39,6 +39,7 @@ import Text.Pandoc.Writers.Shared
39import Text.Pandoc.Options
39import Text.Pandoc.Options
40import Text.Pandoc.Parsing hiding (blankline, blanklines, char, space)
40import Text.Pandoc.Parsing hiding (blankline, blanklines, char, space)
41import Data.Maybe (fromMaybe)
41import Data.Maybe (fromMaybe)
42+import Data.Monoid (Any(..))
42import Data.List ( group, stripPrefix, find, intersperse, transpose, sortBy )
43import Data.List ( group, stripPrefix, find, intersperse, transpose, sortBy )
43import Data.Char ( isSpace, isPunctuation, ord, chr )
44import Data.Char ( isSpace, isPunctuation, ord, chr )
44import Data.Ord ( comparing )
45import Data.Ord ( comparing )
@@ -436,7 +437,10 @@ blockToMarkdown opts t@(Table caption aligns widths headers rows) = do
436 else blankline <> ": " <> caption' <> blankline
437 else blankline <> ": " <> caption' <> blankline
437 rawHeaders <- mapM (blockListToMarkdown opts) headers
438 rawHeaders <- mapM (blockListToMarkdown opts) headers
438 rawRows <- mapM (mapM (blockListToMarkdown opts)) rows
439 rawRows <- mapM (mapM (blockListToMarkdown opts)) rows
440+ let isLineBreak LineBreak = Any True
441+ isLineBreak _ = Any False
439− let isSimple = all (==0) widths
442+ let isSimple = all (==0) widths &&
443+ not ( getAny (query isLineBreak (headers:rows)) )
440 let isPlainBlock (Plain _) = True
444 let isPlainBlock (Plain _) = True
441 isPlainBlock _ = False
445 isPlainBlock _ = False
442 let hasBlocks = not (all isPlainBlock $ concat . concat $ headers:rows)
446 let hasBlocks = not (all isPlainBlock $ concat . concat $ headers:rows)