diff options
author | John MacFarlane <jgm@berkeley.edu> | 2012-09-14 10:55:16 -0400 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2012-09-14 10:55:16 -0400 |
commit | ce509be57a1209367d71a4cd5959f0478a5b2294 (patch) | |
tree | e558b1a0146f3f7314377c7c0c7afdc69c198dde /src/Text | |
parent | 6e9351bac4f2ed54286d568adeb6454407bbff81 (diff) | |
download | pandoc-ce509be57a1209367d71a4cd5959f0478a5b2294.tar.gz |
MediaWiki reader: Table improvements, added simple table tests.
Diffstat (limited to 'src/Text')
-rw-r--r-- | src/Text/Pandoc/Readers/MediaWiki.hs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/Text/Pandoc/Readers/MediaWiki.hs b/src/Text/Pandoc/Readers/MediaWiki.hs index 85001904c..9f78146f8 100644 --- a/src/Text/Pandoc/Readers/MediaWiki.hs +++ b/src/Text/Pandoc/Readers/MediaWiki.hs @@ -171,7 +171,7 @@ table = do rows' <- many $ try $ rowsep *> tableRow tableEnd -- TODO handle cellspecs from styles and aligns... - let cols = length $ head rows' + let cols = length hdr let (headers,rows) = if hasheader then (hdr, rows') else (replicate cols mempty, hdr:rows') @@ -197,11 +197,12 @@ tableCaption = try $ guardColumnOne *> sym "|+" *> skipMany spaceChar *> (trimInlines . mconcat <$> (many inline)) <* skipMany blankline tableRow :: MWParser [Blocks] -tableRow = try $ many tableCell <* skipMany blankline +tableRow = try $ many tableCell tableCell :: MWParser Blocks tableCell = - try $ cellsep *> skipMany spaceChar *> (mconcat <$> (many block)) + try $ cellsep *> skipMany spaceChar *> + (mconcat <$> (many $ notFollowedBy (cellsep <|> rowsep <|> tableEnd) *> block)) template :: MWParser Blocks template = B.rawBlock "mediawiki" <$> doublebrackets @@ -405,7 +406,9 @@ inlineTag = do special :: MWParser Inlines special = B.str <$> count 1 (notFollowedBy' (htmlTag isBlockTag') *> - notFollowedBy (char '|') *> oneOf specialChars) +-- notFollowedBy (tableStart <|> tableEnd +-- <|> cellsep <|> rowsep) *> + oneOf specialChars) inlineHtml :: MWParser Inlines inlineHtml = B.rawInline "html" . snd <$> htmlTag isInlineTag @@ -418,8 +421,10 @@ endline = () <$ try (newline <* notFollowedBy blankline <* notFollowedBy' hrule <* notFollowedBy tableStart <* + notFollowedBy tableEnd <* notFollowedBy' template <* notFollowedBy cellsep <* + notFollowedBy rowsep <* notFollowedBy anyListStart) image :: MWParser Inlines |