git.iko.soy/typeable/pandoc
on master help sign in
LaTeX reader: more table refactoring.
commitaf6e8414c7d39d80831720d35a6d0d5f6e09bbd5 authorJohn MacFarlane <jgm@berkeley.edu> dateThu 1 Jun 2017, 11:56 (9 years ago) parent58cfac8
1 file changed+13−12
src/Text/Pandoc/Readers/LaTeX.hs+13−12
src/Text/Pandoc/Readers/LaTeX.hs+13−12
@@ -1434,7 +1434,7 @@ complexNatbibCitation mode = try $ do
14341434
14351435-- tables
14361436
1437−parseAligns :: PandocMonad m => LP m [(Alignment, (String, String))]
1437+parseAligns :: PandocMonad m => LP m [(Alignment, Double, (String, String))]
14381438parseAligns = try $ do
14391439 bgroup
14401440 let maybeBar = skipMany $ sp <|> () <$ char '|' <|> () <$ (char '@' >> braced)
@@ -1455,11 +1455,13 @@ parseAligns = try $ do
14551455 spaces
14561456 pref <- option "" alignPrefix
14571457 spaces
1458− ch <- alignChar
1459− _width <- option "" braced -- TODO parse this
1458+ al <- alignChar
1459+ let parseWidth :: String -> Double
1460+ parseWidth _ = 0.00 -- TODO actually parse the width
1461+ width <- parseWidth <$> option "" braced
14601462 spaces
14611463 suff <- option "" alignSuffix
1462− return (ch, (pref, suff))
1464+ return (al, width, (pref, suff))
14631465 aligns' <- sepEndBy alignSpec maybeBar
14641466 spaces
14651467 egroup
@@ -1490,11 +1492,10 @@ amp = () <$ try (spaces' *> char '&' <* spaces')
14901492
14911493parseTableRow :: PandocMonad m
14921494 => String -- ^ table environment name
1493− -> [(Alignment, (String, String))] -- ^ colspecs
1495+ -> [(String, String)] -- ^ pref/suffixes
14941496 -> LP m [Blocks]
1495−parseTableRow envname colspecs = try $ do
1496− let prefsufs = map snd colspecs
1497− let cols = length colspecs
1497+parseTableRow envname prefsufs = try $ do
1498+ let cols = length prefsufs
14981499 let tableCellRaw = concat <$> many
14991500 (do notFollowedBy amp
15001501 notFollowedBy lbreak
@@ -1526,16 +1527,17 @@ simpTable envname hasWidthParameter = try $ do
15261527 when hasWidthParameter $ () <$ (spaces' >> tok)
15271528 skipopts
15281529 colspecs <- parseAligns
1530+ let (aligns, widths, prefsufs) = unzip3 colspecs
15291531 let cols = length colspecs
15301532 optional $ controlSeq "caption" *> skipopts *> setCaption
15311533 optional lbreak
15321534 spaces'
15331535 skipMany hline
15341536 spaces'
1535− header' <- option [] $ try (parseTableRow envname colspecs <*
1537+ header' <- option [] $ try (parseTableRow envname prefsufs <*
15361538 lbreak <* many1 hline)
15371539 spaces'
1538− rows <- sepEndBy (parseTableRow envname colspecs)
1540+ rows <- sepEndBy (parseTableRow envname prefsufs)
15391541 (lbreak <* optional (skipMany hline))
15401542 spaces'
15411543 optional $ controlSeq "caption" *> skipopts *> setCaption
@@ -1545,8 +1547,7 @@ simpTable envname hasWidthParameter = try $ do
15451547 then replicate cols mempty
15461548 else header'
15471549 lookAhead $ controlSeq "end" -- make sure we're at end
1548− let (aligns, _) = unzip colspecs
1549− return $ table mempty (zip aligns (repeat 0)) header'' rows
1550+ return $ table mempty (zip aligns widths) header'' rows
15501551
15511552removeDoubleQuotes :: String -> String
15521553removeDoubleQuotes ('"':xs) =