git.iko.soy/typeable/pandoc
on master help sign in
Generalize gridTableWith to any streams with Char tokens
commite874bc2c28fa8651446dd8b8fe6f43339b27de3a authorAlexander Krotov <ilabdsf@gmail.com> dateWed 31 Oct 2018, 00:16 (8 years ago) parent51685ca
1 file changed+18−16
src/Text/Pandoc/Parsing.hs+18−16
src/Text/Pandoc/Parsing.hs+18−16
@@ -932,20 +932,20 @@ widthsFromIndices numColumns' indices =
932932-- (which may be grid), then the rows,
933933-- which may be grid, separated by blank lines, and
934934-- ending with a footer (dashed line followed by blank line).
935−gridTableWith :: (Monad m, HasReaderOptions st,
936− Functor mf, Applicative mf, Monad mf)
937− => ParserT [Char] st m (mf Blocks) -- ^ Block list parser
938− -> Bool -- ^ Headerless table
939− -> ParserT [Char] st m (mf Blocks)
935+gridTableWith :: (Monad m, HasReaderOptions st, Stream s m Char,
936+ Functor mf, Applicative mf, Monad mf, IsString s)
937+ => ParserT s st m (mf Blocks) -- ^ Block list parser
938+ -> Bool -- ^ Headerless table
939+ -> ParserT s st m (mf Blocks)
940940gridTableWith blocks headless =
941941 tableWith (gridTableHeader headless blocks) (gridTableRow blocks)
942942 (gridTableSep '-') gridTableFooter
943943
944−gridTableWith' :: (Monad m, HasReaderOptions st,
945− Functor mf, Applicative mf, Monad mf)
946− => ParserT [Char] st m (mf Blocks) -- ^ Block list parser
947− -> Bool -- ^ Headerless table
948− -> ParserT [Char] st m (TableComponents mf)
944+gridTableWith' :: (Monad m, HasReaderOptions st, Stream s m Char,
945+ Functor mf, Applicative mf, Monad mf, IsString s)
946+ => ParserT s st m (mf Blocks) -- ^ Block list parser
947+ -> Bool -- ^ Headerless table
948+ -> ParserT s st m (TableComponents mf)
949949gridTableWith' blocks headless =
950950 tableWith' (gridTableHeader headless blocks) (gridTableRow blocks)
951951 (gridTableSep '-') gridTableFooter
@@ -981,10 +981,11 @@ gridTableSep :: Stream s m Char => Char -> ParserT s st m Char
981981gridTableSep ch = try $ gridDashedLines ch >> return '\n'
982982
983983-- | Parse header for a grid table.
984−gridTableHeader :: (Monad m, Functor mf, Applicative mf, Monad mf)
984+gridTableHeader :: (Monad m, Functor mf, Applicative mf, Monad mf,
985+ Stream s m Char, IsString s)
985986 => Bool -- ^ Headerless table
986− -> ParserT [Char] st m (mf Blocks)
987− -> ParserT [Char] st m (mf [Blocks], [Alignment], [Int])
987+ -> ParserT s st m (mf Blocks)
988+ -> ParserT s st m (mf [Blocks], [Alignment], [Int])
988989gridTableHeader headless blocks = try $ do
989990 optional blanklines
990991 dashes <- gridDashedLines '-'
@@ -1014,10 +1015,11 @@ gridTableRawLine indices = do
10141015 return (gridTableSplitLine indices line)
10151016
10161017-- | Parse row of grid table.
1017−gridTableRow :: (Monad m, Functor mf, Applicative mf, Monad mf)
1018− => ParserT [Char] st m (mf Blocks)
1018+gridTableRow :: (Monad m, Functor mf, Applicative mf, Monad mf,
1019+ Stream s m Char, IsString s)
1020+ => ParserT s st m (mf Blocks)
10191021 -> [Int]
1020− -> ParserT [Char] st m (mf [Blocks])
1022+ -> ParserT s st m (mf [Blocks])
10211023gridTableRow blocks indices = do
10221024 colLines <- many1 (gridTableRawLine indices)
10231025 let cols = map ((++ "\n") . unlines . removeOneLeadingSpace) $