diff options
| author | John MacFarlane <jgm@berkeley.edu> | 2023-08-29 20:04:10 -0700 |
|---|---|---|
| committer | John MacFarlane <jgm@berkeley.edu> | 2023-08-29 20:04:39 -0700 |
| commit | 09de84fff41d4a6e8d227baeea0037531fcef9e2 (patch) | |
| tree | 311f3803a8986b418dfbba608509af2fa227db91 /src | |
| parent | 7dca09d03ad483e1ad2443dbb68e56fd55660bdb (diff) | |
Support images with wikilink syntax.
E.g. `![[foo|bar]]`. (This requires enabling one of the `wikilinks`
extensions.)
Closes #8853.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Text/Pandoc/Readers/Markdown.hs | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 89b194767..d88c5d995 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -1527,7 +1527,7 @@ inline = do '_' -> strongOrEmph '*' -> strongOrEmph '^' -> superscript <|> inlineNote -- in this order bc ^[link](/foo)^ - '[' -> note <|> cite <|> bracketedSpan <|> wikilink <|> link + '[' -> note <|> cite <|> bracketedSpan <|> wikilink B.linkWith <|> link '!' -> image '$' -> math '~' -> strikeout <|> subscript @@ -1844,8 +1844,10 @@ source = do linkTitle :: PandocMonad m => MarkdownParser m Text linkTitle = quotedTitle '"' <|> quotedTitle '\'' -wikilink :: PandocMonad m => MarkdownParser m (F Inlines) -wikilink = +wikilink :: PandocMonad m + => (Attr -> Text -> Text -> Inlines -> Inlines) + -> MarkdownParser m (F Inlines) +wikilink constructor = (guardEnabled Ext_wikilinks_title_after_pipe *> wikilink' swap) <|> (guardEnabled Ext_wikilinks_title_before_pipe *> wikilink' id) where @@ -1857,7 +1859,7 @@ wikilink = let (title, url) = case T.break (== '|') raw of (before, "") -> (before, before) (before, after) -> order (before, T.drop 1 after) - return . pure . B.link url "wikilink" $ B.str title + return . pure . constructor nullAttr url "wikilink" $ B.str title link :: PandocMonad m => MarkdownParser m (F Inlines) link = try $ do @@ -2015,14 +2017,15 @@ rebasePath pos path = do image :: PandocMonad m => MarkdownParser m (F Inlines) image = try $ do char '!' - (lab,raw) <- reference - defaultExt <- getOption readerDefaultImageExtension - let constructor attr' src = - case takeExtension (T.unpack src) of - "" -> B.imageWith attr' (T.pack $ addExtension (T.unpack src) - $ T.unpack defaultExt) - _ -> B.imageWith attr' src - regLink constructor lab <|> referenceLink constructor (lab, "!" <> raw) + wikilink B.imageWith <|> + do (lab,raw) <- reference + defaultExt <- getOption readerDefaultImageExtension + let constructor attr' src = + case takeExtension (T.unpack src) of + "" -> B.imageWith attr' (T.pack $ addExtension (T.unpack src) + $ T.unpack defaultExt) + _ -> B.imageWith attr' src + regLink constructor lab <|> referenceLink constructor (lab, "!" <> raw) note :: PandocMonad m => MarkdownParser m (F Inlines) note = try $ do |
