Org reader: allow empty links for gitit interop
While empty links are not allowed in Emacs org-mode, Pandoc org-mode should support them: gitit relies on empty links as they are used to create wiki links. Fixes jgm/gitit#471
This commit is contained in:
parent
daaf635806
commit
e6cd8c9077
2 changed files with 9 additions and 1 deletions
|
@ -1099,7 +1099,7 @@ linkOrImage = explicitOrImageLink
|
|||
explicitOrImageLink :: OrgParser (F Inlines)
|
||||
explicitOrImageLink = try $ do
|
||||
char '['
|
||||
srcF <- applyCustomLinkFormat =<< linkTarget
|
||||
srcF <- applyCustomLinkFormat =<< possiblyEmptyLinkTarget
|
||||
title <- enclosedRaw (char '[') (char ']')
|
||||
title' <- parseFromString (mconcat <$> many inline) title
|
||||
char ']'
|
||||
|
@ -1132,6 +1132,9 @@ selfTarget = try $ char '[' *> linkTarget <* char ']'
|
|||
linkTarget :: OrgParser String
|
||||
linkTarget = enclosedByPair '[' ']' (noneOf "\n\r[]")
|
||||
|
||||
possiblyEmptyLinkTarget :: OrgParser String
|
||||
possiblyEmptyLinkTarget = try linkTarget <|> ("" <$ string "[]")
|
||||
|
||||
applyCustomLinkFormat :: String -> OrgParser (F String)
|
||||
applyCustomLinkFormat link = do
|
||||
let (linkType, rest) = break (== ':') link
|
||||
|
@ -1142,6 +1145,7 @@ applyCustomLinkFormat link = do
|
|||
linkToInlinesF :: String -> Inlines -> F Inlines
|
||||
linkToInlinesF s =
|
||||
case s of
|
||||
"" -> pure . B.link "" ""
|
||||
('#':_) -> pure . B.link s ""
|
||||
_ | isImageFilename s -> const . pure $ B.image s "" ""
|
||||
_ | isUri s -> pure . B.link s ""
|
||||
|
|
|
@ -205,6 +205,10 @@ tests =
|
|||
"[[../file.txt][moin]]" =?>
|
||||
(para $ link "../file.txt" "" "moin")
|
||||
|
||||
, "Empty link (for gitit interop)" =:
|
||||
"[[][New Link]]" =?>
|
||||
(para $ link "" "" "New Link")
|
||||
|
||||
, "Image link" =:
|
||||
"[[sunset.png][dusk.svg]]" =?>
|
||||
(para $ link "sunset.png" "" (image "dusk.svg" "" ""))
|
||||
|
|
Loading…
Add table
Reference in a new issue