@@ -673,10 +673,10 @@ data MuseTable = MuseTable
673673 , museTableFooters :: [[Blocks]]
674674 }
675675
676−data MuseTableElement = MuseHeaderRow (F [Blocks])
677− | MuseBodyRow (F [Blocks])
678− | MuseFooterRow (F [Blocks])
679− | MuseCaption (F Inlines)
676+data MuseTableElement = MuseHeaderRow [Blocks]
677+ | MuseBodyRow [Blocks]
678+ | MuseFooterRow [Blocks]
679+ | MuseCaption (Inlines)
680680
681681museToPandocTable :: MuseTable -> Blocks
682682museToPandocTable (MuseTable caption headers body footers) =
@@ -688,38 +688,30 @@ museToPandocTable (MuseTable caption headers body footers) =
688688
689689museAppendElement :: MuseTable
690690 -> MuseTableElement
691− -> F MuseTable
691+ -> MuseTable
692692museAppendElement tbl element =
693693 case element of
694− MuseHeaderRow row -> do
695− row' <- row
696− return tbl{ museTableHeaders = museTableHeaders tbl ++ [row'] }
697− MuseBodyRow row -> do
698− row' <- row
699− return tbl{ museTableRows = museTableRows tbl ++ [row'] }
700− MuseFooterRow row-> do
701− row' <- row
702− return tbl{ museTableFooters = museTableFooters tbl ++ [row'] }
703− MuseCaption inlines -> do
704− inlines' <- inlines
705− return tbl{ museTableCaption = inlines' }
694+ MuseHeaderRow row -> tbl{ museTableHeaders = museTableHeaders tbl ++ [row] }
695+ MuseBodyRow row -> tbl{ museTableRows = museTableRows tbl ++ [row] }
696+ MuseFooterRow row -> tbl{ museTableFooters = museTableFooters tbl ++ [row] }
697+ MuseCaption inlines -> tbl{ museTableCaption = inlines }
706698
707699tableCell :: PandocMonad m => MuseParser m (F Blocks)
708700tableCell = try $ fmap B.plain . trimInlinesF . mconcat <$> manyTill inline (lookAhead cellEnd)
709701 where cellEnd = try $ void (many1 spaceChar >> char '|') <|> eol
710702
711−tableElements :: PandocMonad m => MuseParser m [MuseTableElement]
712−tableElements = tableParseElement `sepEndBy1` eol
703+tableElements :: PandocMonad m => MuseParser m (F [MuseTableElement])
704+tableElements = sequence <$> (tableParseElement `sepEndBy1` eol)
713705
714−elementsToTable :: [MuseTableElement] -> F MuseTable
715−elementsToTable = foldM museAppendElement emptyTable
706+elementsToTable :: [MuseTableElement] -> MuseTable
707+elementsToTable = foldl museAppendElement emptyTable
716708 where emptyTable = MuseTable mempty mempty mempty mempty
717709
718710-- | Parse a table.
719711table :: PandocMonad m => MuseParser m (F Blocks)
720−table = try $ fmap museToPandocTable <$> (elementsToTable <$> tableElements)
712+table = try $ fmap (museToPandocTable . elementsToTable) <$> tableElements
721713
722−tableParseElement :: PandocMonad m => MuseParser m MuseTableElement
714+tableParseElement :: PandocMonad m => MuseParser m (F MuseTableElement)
723715tableParseElement = tableParseHeader
724716 <|> tableParseBody
725717 <|> tableParseFooter
@@ -735,23 +727,23 @@ tableParseRow n = try $ do
735727 fieldSep = many1 spaceChar >> count n (char '|') >> (void (many1 spaceChar) <|> void (lookAhead newline))
736728
737729-- | Parse a table header row.
738−tableParseHeader :: PandocMonad m => MuseParser m MuseTableElement
739−tableParseHeader = MuseHeaderRow <$> tableParseRow 2
730+tableParseHeader :: PandocMonad m => MuseParser m (F MuseTableElement)
731+tableParseHeader = fmap MuseHeaderRow <$> tableParseRow 2
740732
741733-- | Parse a table body row.
742−tableParseBody :: PandocMonad m => MuseParser m MuseTableElement
743−tableParseBody = MuseBodyRow <$> tableParseRow 1
734+tableParseBody :: PandocMonad m => MuseParser m (F MuseTableElement)
735+tableParseBody = fmap MuseBodyRow <$> tableParseRow 1
744736
745737-- | Parse a table footer row.
746−tableParseFooter :: PandocMonad m => MuseParser m MuseTableElement
747−tableParseFooter = MuseFooterRow <$> tableParseRow 3
738+tableParseFooter :: PandocMonad m => MuseParser m (F MuseTableElement)
739+tableParseFooter = fmap MuseFooterRow <$> tableParseRow 3
748740
749741-- | Parse table caption.
750−tableParseCaption :: PandocMonad m => MuseParser m MuseTableElement
742+tableParseCaption :: PandocMonad m => MuseParser m (F MuseTableElement)
751743tableParseCaption = try $ do
752744 many spaceChar
753745 string "|+"
754− MuseCaption <$> (trimInlinesF . mconcat <$> many1Till inline (string "+|"))
746+ fmap MuseCaption <$> (trimInlinesF . mconcat <$> many1Till inline (string "+|"))
755747
756748-- ** Inline parsers
757749