git.iko.soy/typeable/pandoc
on master help sign in
Muse reader: move F out of MuseTableElement definition
579f422Alexander Krotov
src/Text/Pandoc/Readers/Muse.hs+23−31
@@ -673,10 +673,10 @@ data MuseTable = MuseTable
673 , museTableFooters :: [[Blocks]]
673 , museTableFooters :: [[Blocks]]
674 }
674 }
675
675
676−data MuseTableElement = MuseHeaderRow (F [Blocks])
676+data MuseTableElement = MuseHeaderRow [Blocks]
677− | MuseBodyRow (F [Blocks])
677+ | MuseBodyRow [Blocks]
678− | MuseFooterRow (F [Blocks])
678+ | MuseFooterRow [Blocks]
679− | MuseCaption (F Inlines)
679+ | MuseCaption (Inlines)
680
680
681museToPandocTable :: MuseTable -> Blocks
681museToPandocTable :: MuseTable -> Blocks
682museToPandocTable (MuseTable caption headers body footers) =
682museToPandocTable (MuseTable caption headers body footers) =
@@ -688,38 +688,30 @@ museToPandocTable (MuseTable caption headers body footers) =
688
688
689museAppendElement :: MuseTable
689museAppendElement :: MuseTable
690 -> MuseTableElement
690 -> MuseTableElement
691− -> F MuseTable
691+ -> MuseTable
692museAppendElement tbl element =
692museAppendElement tbl element =
693 case element of
693 case element of
694− MuseHeaderRow row -> do
695− row' <- row
696− return tbl{ museTableHeaders = museTableHeaders tbl ++ [row'] }
694+ MuseHeaderRow row -> tbl{ museTableHeaders = museTableHeaders tbl ++ [row] }
697− MuseBodyRow row -> do
698− row' <- row
699− return tbl{ museTableRows = museTableRows tbl ++ [row'] }
695+ MuseBodyRow row -> tbl{ museTableRows = museTableRows tbl ++ [row] }
700− MuseFooterRow row-> do
701− row' <- row
702− return tbl{ museTableFooters = museTableFooters tbl ++ [row'] }
696+ MuseFooterRow row -> tbl{ museTableFooters = museTableFooters tbl ++ [row] }
703− MuseCaption inlines -> do
704− inlines' <- inlines
705− return tbl{ museTableCaption = inlines' }
697+ MuseCaption inlines -> tbl{ museTableCaption = inlines }
706
698
707tableCell :: PandocMonad m => MuseParser m (F Blocks)
699tableCell :: PandocMonad m => MuseParser m (F Blocks)
708tableCell = try $ fmap B.plain . trimInlinesF . mconcat <$> manyTill inline (lookAhead cellEnd)
700tableCell = try $ fmap B.plain . trimInlinesF . mconcat <$> manyTill inline (lookAhead cellEnd)
709 where cellEnd = try $ void (many1 spaceChar >> char '|') <|> eol
701 where cellEnd = try $ void (many1 spaceChar >> char '|') <|> eol
710
702
711−tableElements :: PandocMonad m => MuseParser m [MuseTableElement]
703+tableElements :: PandocMonad m => MuseParser m (F [MuseTableElement])
712−tableElements = tableParseElement `sepEndBy1` eol
704+tableElements = sequence <$> (tableParseElement `sepEndBy1` eol)
713
705
714−elementsToTable :: [MuseTableElement] -> F MuseTable
706+elementsToTable :: [MuseTableElement] -> MuseTable
715−elementsToTable = foldM museAppendElement emptyTable
707+elementsToTable = foldl museAppendElement emptyTable
716 where emptyTable = MuseTable mempty mempty mempty mempty
708 where emptyTable = MuseTable mempty mempty mempty mempty
717
709
718-- | Parse a table.
710-- | Parse a table.
719table :: PandocMonad m => MuseParser m (F Blocks)
711table :: PandocMonad m => MuseParser m (F Blocks)
720−table = try $ fmap museToPandocTable <$> (elementsToTable <$> tableElements)
712+table = try $ fmap (museToPandocTable . elementsToTable) <$> tableElements
721
713
722−tableParseElement :: PandocMonad m => MuseParser m MuseTableElement
714+tableParseElement :: PandocMonad m => MuseParser m (F MuseTableElement)
723tableParseElement = tableParseHeader
715tableParseElement = tableParseHeader
724 <|> tableParseBody
716 <|> tableParseBody
725 <|> tableParseFooter
717 <|> tableParseFooter
@@ -735,23 +727,23 @@ tableParseRow n = try $ do
735 fieldSep = many1 spaceChar >> count n (char '|') >> (void (many1 spaceChar) <|> void (lookAhead newline))
727 fieldSep = many1 spaceChar >> count n (char '|') >> (void (many1 spaceChar) <|> void (lookAhead newline))
736
728
737-- | Parse a table header row.
729-- | Parse a table header row.
738−tableParseHeader :: PandocMonad m => MuseParser m MuseTableElement
730+tableParseHeader :: PandocMonad m => MuseParser m (F MuseTableElement)
739−tableParseHeader = MuseHeaderRow <$> tableParseRow 2
731+tableParseHeader = fmap MuseHeaderRow <$> tableParseRow 2
740
732
741-- | Parse a table body row.
733-- | Parse a table body row.
742−tableParseBody :: PandocMonad m => MuseParser m MuseTableElement
734+tableParseBody :: PandocMonad m => MuseParser m (F MuseTableElement)
743−tableParseBody = MuseBodyRow <$> tableParseRow 1
735+tableParseBody = fmap MuseBodyRow <$> tableParseRow 1
744
736
745-- | Parse a table footer row.
737-- | Parse a table footer row.
746−tableParseFooter :: PandocMonad m => MuseParser m MuseTableElement
738+tableParseFooter :: PandocMonad m => MuseParser m (F MuseTableElement)
747−tableParseFooter = MuseFooterRow <$> tableParseRow 3
739+tableParseFooter = fmap MuseFooterRow <$> tableParseRow 3
748
740
749-- | Parse table caption.
741-- | Parse table caption.
750−tableParseCaption :: PandocMonad m => MuseParser m MuseTableElement
742+tableParseCaption :: PandocMonad m => MuseParser m (F MuseTableElement)
751tableParseCaption = try $ do
743tableParseCaption = try $ do
752 many spaceChar
744 many spaceChar
753 string "|+"
745 string "|+"
754− MuseCaption <$> (trimInlinesF . mconcat <$> many1Till inline (string "+|"))
746+ fmap MuseCaption <$> (trimInlinesF . mconcat <$> many1Till inline (string "+|"))
755
747
756-- ** Inline parsers
748-- ** Inline parsers
757
749