MediaWiki reader: Table improvements, added simple table tests.
This commit is contained in:
parent
6e9351bac4
commit
ce509be57a
3 changed files with 53 additions and 5 deletions
|
@ -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
|
||||
|
|
|
@ -173,4 +173,21 @@ Pandoc (Meta {docTitle = [], docAuthors = [], docDate = []})
|
|||
,RawBlock "mediawiki" "{{Welcome}}"
|
||||
,RawBlock "mediawiki" "{{Foo:Bar}}"
|
||||
,RawBlock "mediawiki" "{{Thankyou|all your effort|Me}}"
|
||||
,Para [Str "Written",Space,RawInline "mediawiki" "{{{date}}}",Space,Str "by",Space,RawInline "mediawiki" "{{{name}}}",Str "."]]
|
||||
,Para [Str "Written",Space,RawInline "mediawiki" "{{{date}}}",Space,Str "by",Space,RawInline "mediawiki" "{{{name}}}",Str "."]
|
||||
,Header 2 [Str "tables"]
|
||||
,Table [] [AlignDefault,AlignDefault] [0.0,0.0]
|
||||
[[]
|
||||
,[]]
|
||||
[[[Para [Str "Orange"]]
|
||||
,[Para [Str "Apple"]]]
|
||||
,[[Para [Str "Bread"]]
|
||||
,[Para [Str "Pie"]]]
|
||||
,[[Para [Str "Butter"]]
|
||||
,[Para [Str "Ice",Space,Str "cream"]]]]
|
||||
,Table [Str "Food",Space,Str "complements"] [AlignDefault,AlignDefault] [0.0,0.0]
|
||||
[[Para [Str "Orange"]]
|
||||
,[Para [Str "Apple"]]]
|
||||
[[[Para [Str "Bread"]]
|
||||
,[Para [Str "Pie"]]]
|
||||
,[[Para [Str "Butter"]]
|
||||
,[Para [Str "Ice",Space,Str "cream"]]]]]
|
||||
|
|
|
@ -281,3 +281,29 @@ Not<hr/> preformatted
|
|||
|
||||
Written {{{date}}} by {{{name}}}.
|
||||
|
||||
== tables ==
|
||||
|
||||
{|
|
||||
|-
|
||||
|Orange
|
||||
|Apple
|
||||
|-
|
||||
|Bread
|
||||
|Pie
|
||||
|-
|
||||
|Butter
|
||||
|Ice cream
|
||||
|}
|
||||
|
||||
{|
|
||||
|+Food complements
|
||||
!Orange
|
||||
!Apple
|
||||
|-
|
||||
|Bread
|
||||
|Pie
|
||||
|-
|
||||
!Butter
|
||||
|Ice cream
|
||||
|}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue