aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/Readers/Muse.hs12
-rw-r--r--test/Tests/Readers/Muse.hs20
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]."