git.iko.soy/typeable/pandoc
on master help sign in
MediaWiki reader: Parse styles after '{|' table start.
commit9a54a949c7a527d87958c2fc00d4712f7adb5d1e authorJohn MacFarlane <jgm@berkeley.edu> dateSat 15 Sep 2012, 00:23 (14 years ago) parentaa476b4
3 files changed+39−3
src/Text/Pandoc/Readers/MediaWiki.hs+18−1 tests/mediawiki-reader.native+14−1 tests/mediawiki-reader.wiki+7−1
src/Text/Pandoc/Readers/MediaWiki.hs+18−1
@@ -164,6 +164,9 @@ para = B.para . trimInlines . mconcat <$> many1 inline
164164table :: MWParser Blocks
165165table = do
166166 tableStart
167+ styles <- manyTill anyChar newline
168+ let tableWidth = maybe (1.0 :: Double) read
169+ $ lookup "width" $ parseAttrs styles
167170 caption <- option mempty tableCaption
168171 optional rowsep
169172 hasheader <- option False $ True <$ (lookAhead (char '!'))
@@ -178,8 +181,22 @@ table = do
178181 let cellspecs = replicate cols (AlignDefault, 0.0)
179182 return $ B.table caption cellspecs headers rows
180183
184+parseAttrs :: String -> [(String,String)]
185+parseAttrs s = case parse (many parseAttr) "attributes" s of
186+ Right r -> r
187+ Left _ -> []
188+
189+parseAttr :: Parser String () (String, String)
190+parseAttr = try $ do
191+ skipMany spaceChar
192+ k <- many1 letter
193+ char '='
194+ char '"'
195+ v <- many1Till anyChar (char '"')
196+ return (k,v)
197+
181198tableStart :: MWParser ()
182−tableStart = try $ guardColumnOne *> sym "{|" <* blanklines
199+tableStart = try $ guardColumnOne *> sym "{|"
183200
184201tableEnd :: MWParser ()
185202tableEnd = try $ guardColumnOne *> sym "|}" <* blanklines
tests/mediawiki-reader.native+14−1
@@ -199,4 +199,17 @@ Pandoc (Meta {docTitle = [], docAuthors = [], docDate = []})
199199 ,[Para [Str "Pie"]
200200 ,OrderedList (1,DefaultStyle,DefaultDelim)
201201 [[Plain [Str "apple"]]
202− ,[Plain [Str "carrot"]]]]]]]
202+ ,[Plain [Str "carrot"]]]]]]
203+,Table [] [AlignDefault,AlignDefault,AlignDefault] [0.0,0.0,0.0]
204+ [[]
205+ ,[]
206+ ,[]]
207+ [[[Para [Str "Orange"]]
208+ ,[Para [Str "Apple"]]
209+ ,[Para [Str "more"]]]
210+ ,[[Para [Str "Bread"]]
211+ ,[Para [Str "Pie"]]
212+ ,[Para [Str "more"]]]
213+ ,[[Para [Str "Butter"]]
214+ ,[Para [Str "Ice",Space,Str "cream"]]
215+ ,[Para [Str "and",Space,Str "more"]]]]]
tests/mediawiki-reader.wiki+7−1
@@ -322,5 +322,11 @@ and cheese
322322
323323|}
324324
325−
325+{|
326+| Orange || Apple || more
327+|-
328+| Bread || Pie || more
329+|-
330+| Butter || Ice cream || and more
331+|}
326332