aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2012-09-15 00:23:24 -0400
committerJohn MacFarlane <jgm@berkeley.edu>2012-09-15 00:23:24 -0400
commit9a54a949c7a527d87958c2fc00d4712f7adb5d1e (patch)
tree15902f87c2cf94296d6e2a11110c9e0199e0e32c
parentaa476b42cb84cf1f0bdf187574e0f584dc5fea91 (diff)
downloadpandoc-9a54a949c7a527d87958c2fc00d4712f7adb5d1e.tar.gz
MediaWiki reader: Parse styles after '{|' table start.
-rw-r--r--src/Text/Pandoc/Readers/MediaWiki.hs19
-rw-r--r--tests/mediawiki-reader.native15
-rw-r--r--tests/mediawiki-reader.wiki8
3 files changed, 39 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Readers/MediaWiki.hs b/src/Text/Pandoc/Readers/MediaWiki.hs
index d18a98bc0..89564f504 100644
--- a/src/Text/Pandoc/Readers/MediaWiki.hs
+++ b/src/Text/Pandoc/Readers/MediaWiki.hs
@@ -164,6 +164,9 @@ para = B.para . trimInlines . mconcat <$> many1 inline
table :: MWParser Blocks
table = do
tableStart
+ styles <- manyTill anyChar newline
+ let tableWidth = maybe (1.0 :: Double) read
+ $ lookup "width" $ parseAttrs styles
caption <- option mempty tableCaption
optional rowsep
hasheader <- option False $ True <$ (lookAhead (char '!'))
@@ -178,8 +181,22 @@ table = do
let cellspecs = replicate cols (AlignDefault, 0.0)
return $ B.table caption cellspecs headers rows
+parseAttrs :: String -> [(String,String)]
+parseAttrs s = case parse (many parseAttr) "attributes" s of
+ Right r -> r
+ Left _ -> []
+
+parseAttr :: Parser String () (String, String)
+parseAttr = try $ do
+ skipMany spaceChar
+ k <- many1 letter
+ char '='
+ char '"'
+ v <- many1Till anyChar (char '"')
+ return (k,v)
+
tableStart :: MWParser ()
-tableStart = try $ guardColumnOne *> sym "{|" <* blanklines
+tableStart = try $ guardColumnOne *> sym "{|"
tableEnd :: MWParser ()
tableEnd = try $ guardColumnOne *> sym "|}" <* blanklines
diff --git a/tests/mediawiki-reader.native b/tests/mediawiki-reader.native
index 6e19c14ce..9954481fd 100644
--- a/tests/mediawiki-reader.native
+++ b/tests/mediawiki-reader.native
@@ -199,4 +199,17 @@ Pandoc (Meta {docTitle = [], docAuthors = [], docDate = []})
,[Para [Str "Pie"]
,OrderedList (1,DefaultStyle,DefaultDelim)
[[Plain [Str "apple"]]
- ,[Plain [Str "carrot"]]]]]]]
+ ,[Plain [Str "carrot"]]]]]]
+,Table [] [AlignDefault,AlignDefault,AlignDefault] [0.0,0.0,0.0]
+ [[]
+ ,[]
+ ,[]]
+ [[[Para [Str "Orange"]]
+ ,[Para [Str "Apple"]]
+ ,[Para [Str "more"]]]
+ ,[[Para [Str "Bread"]]
+ ,[Para [Str "Pie"]]
+ ,[Para [Str "more"]]]
+ ,[[Para [Str "Butter"]]
+ ,[Para [Str "Ice",Space,Str "cream"]]
+ ,[Para [Str "and",Space,Str "more"]]]]]
diff --git a/tests/mediawiki-reader.wiki b/tests/mediawiki-reader.wiki
index b2bfb47e8..fd1159cd4 100644
--- a/tests/mediawiki-reader.wiki
+++ b/tests/mediawiki-reader.wiki
@@ -322,5 +322,11 @@ and cheese
|}
-
+{|
+| Orange || Apple || more
+|-
+| Bread || Pie || more
+|-
+| Butter || Ice cream || and more
+|}