git.iko.soy/typeable/pandoc
on master help sign in
Muse reader: parse verse without parseFromString
commit4a5801b823e1fbd3d5b208b97acce78859c45b0d authorAlexander Krotov <ilabdsf@gmail.com> dateFri 19 Jan 2018, 12:12 (9 years ago) parent4d3f787
1 file changed+12−10
src/Text/Pandoc/Readers/Muse.hs+12−10
src/Text/Pandoc/Readers/Muse.hs+12−10
@@ -390,21 +390,23 @@ emacsNoteBlock = try $ do
390390-- Verse markup
391391--
392392
393−lineVerseLine :: PandocMonad m => MuseParser m String
393+lineVerseLine :: PandocMonad m => MuseParser m (F Inlines)
394394lineVerseLine = try $ do
395− char '>'
396− white <- many1 (char ' ' >> pure '\160')
397− rest <- anyLine
398− return $ tail white ++ rest
395+ string "> "
396+ indent <- B.str <$> many (char ' ' >> pure '\160')
397+ rest <- manyTill (choice inlineList) eol
398+ return $ trimInlinesF $ mconcat (pure indent : rest)
399399
400−blanklineVerseLine :: PandocMonad m => MuseParser m Char
401−blanklineVerseLine = try $ char '>' >> blankline
400+blanklineVerseLine :: PandocMonad m => MuseParser m (F Inlines)
401+blanklineVerseLine = try $ do
402+ char '>'
403+ blankline
404+ pure mempty
402405
403406lineBlock :: PandocMonad m => MuseParser m (F Blocks)
404407lineBlock = try $ do
405− lns <- many1 (pure <$> blanklineVerseLine <|> lineVerseLine)
406− lns' <- mapM (parseFromString' (trimInlinesF . mconcat <$> many inline)) lns
407− return $ B.lineBlock <$> sequence lns'
408+ lns <- many1 (blanklineVerseLine <|> lineVerseLine)
409+ return $ B.lineBlock <$> sequence lns
408410
409411--
410412-- lists