diff options
-rw-r--r-- | src/Text/Pandoc/Readers/Muse.hs | 12 | ||||
-rw-r--r-- | test/Tests/Readers/Muse.hs | 20 |
2 files changed, 31 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/Muse.hs b/src/Text/Pandoc/Readers/Muse.hs index 6e7844d4b..6f9b9b3c2 100644 --- a/src/Text/Pandoc/Readers/Muse.hs +++ b/src/Text/Pandoc/Readers/Muse.hs @@ -35,7 +35,6 @@ TODO: - Org tables - table.el tables - Images with attributes (floating and width) -- Anchors - Citations and <biblio> - <play> environment -} @@ -535,6 +534,7 @@ tableParseCaption = try $ do inline :: PandocMonad m => MuseParser m (F Inlines) inline = choice [ br + , anchor , footnote , strong , strongTag @@ -552,6 +552,16 @@ inline = choice [ br , symbol ] <?> "inline" +anchor :: PandocMonad m => MuseParser m (F Inlines) +anchor = try $ do + getPosition >>= \pos -> guard (sourceColumn pos == 1) + char '#' + first <- letter + rest <- many (letter <|> digit) + skipMany spaceChar <|> void newline + let anchorId = first:rest + return $ return $ B.spanWith (anchorId, [], []) mempty + footnote :: PandocMonad m => MuseParser m (F Inlines) footnote = try $ do ref <- noteMarker diff --git a/test/Tests/Readers/Muse.hs b/test/Tests/Readers/Muse.hs index 3088f88b3..f89c58d3f 100644 --- a/test/Tests/Readers/Muse.hs +++ b/test/Tests/Readers/Muse.hs @@ -344,6 +344,26 @@ tests = ] =?> blockQuote (para "* Hi") ] + , testGroup "Anchors" + [ "Anchor" =: + T.unlines [ "; A comment to make sure anchor is not parsed as a directive" + , "#anchor Target" + ] =?> + para (spanWith ("anchor", [], []) mempty <> "Target") + , "Anchor cannot start with a number" =: + T.unlines [ "; A comment to make sure anchor is not parsed as a directive" + , "#0notanchor Target" + ] =?> + para "#0notanchor Target" + , "Not anchor if starts with a space" =: + " #notanchor Target" =?> + para "#notanchor Target" + , "Anchor inside a paragraph" =: + T.unlines [ "Paragraph starts here" + , "#anchor and ends here." + ] =?> + para ("Paragraph starts here " <> spanWith ("anchor", [], []) mempty <> "and ends here.") + ] , testGroup "Footnotes" [ "Simple footnote" =: T.unlines [ "Here is a footnote[1]." |