mirror of
https://github.com/jgm/pandoc.git
synced 2026-08-28 17:20:47 +08:00
Markdown reader: fix dropped ! before nonexistent reference.
In e.g. `![foo]` the `!` would be silently dropped if `[foo]` wasn't a reference link label. Closes #9038.
This commit is contained in:
@@ -1931,15 +1931,20 @@ referenceLink constructor (lab, raw) = do
|
||||
try ((guardDisabled Ext_spaced_reference_links <|> spnl) >> reference)
|
||||
when (raw' == "") $ guardEnabled Ext_shortcut_reference_links
|
||||
let !labIsRef = raw' == "" || raw' == "[]"
|
||||
let !key = toKey $ if labIsRef then raw else raw'
|
||||
let (rawprefix, rawsuffix) =
|
||||
case T.uncons raw of
|
||||
Just ('!', x) -> ("!", x)
|
||||
_ -> ("", raw)
|
||||
let !key = toKey $ if labIsRef then rawsuffix else raw'
|
||||
parsedRaw <- parseFromString' inlines raw'
|
||||
fallback <- parseFromString' inlines $ dropBrackets raw
|
||||
fallback <- parseFromString' inlines $ dropBrackets rawsuffix
|
||||
implicitHeaderRefs <- option False $
|
||||
True <$ guardEnabled Ext_implicit_header_references
|
||||
let makeFallback = do
|
||||
parsedRaw' <- parsedRaw
|
||||
fallback' <- fallback
|
||||
return $ B.str "[" <> fallback' <> B.str "]" <>
|
||||
return $ rawprefix <>
|
||||
B.str "[" <> fallback' <> B.str "]" <>
|
||||
(if sp && not (T.null raw) then B.space else mempty) <>
|
||||
parsedRaw'
|
||||
return $ do
|
||||
@@ -2014,7 +2019,7 @@ image = try $ do
|
||||
"" -> B.imageWith attr' (T.pack $ addExtension (T.unpack src)
|
||||
$ T.unpack defaultExt)
|
||||
_ -> B.imageWith attr' src
|
||||
regLink constructor lab <|> referenceLink constructor (lab,raw)
|
||||
regLink constructor lab <|> referenceLink constructor (lab, "!" <> raw)
|
||||
|
||||
note :: PandocMonad m => MarkdownParser m (F Inlines)
|
||||
note = try $ do
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
```
|
||||
% pandoc -t native
|
||||
![foo]
|
||||
^D
|
||||
[ Para [ Str "![foo]" ] ]
|
||||
```
|
||||
Reference in New Issue
Block a user