@@ -673,10 +673,10 @@ data MuseTable = MuseTable
673 , museTableFooters :: [[Blocks]]
673 , museTableFooters :: [[Blocks]]
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)
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) =
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
696− return tbl{ museTableHeaders = museTableHeaders tbl ++ [row'] }
694+ MuseHeaderRow row -> tbl{ museTableHeaders = museTableHeaders tbl ++ [row] }
697− MuseBodyRow row -> do
699− return tbl{ museTableRows = museTableRows tbl ++ [row'] }
695+ MuseBodyRow row -> tbl{ museTableRows = museTableRows tbl ++ [row] }
700− MuseFooterRow row-> do
702− return tbl{ museTableFooters = museTableFooters tbl ++ [row'] }
696+ MuseFooterRow row -> tbl{ museTableFooters = museTableFooters tbl ++ [row] }
703− MuseCaption inlines -> do
705− return tbl{ museTableCaption = inlines' }
697+ MuseCaption inlines -> tbl{ museTableCaption = inlines }
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
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)
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
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
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))
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
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
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
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 "+|"))
756-- ** Inline parsers
748-- ** Inline parsers