aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <[email protected]>2021-10-03 09:56:40 -0700
committerJohn MacFarlane <[email protected]>2021-10-03 09:56:40 -0700
commit63a0363ccd8a5bb3f828c3ae441d481fa6e88274 (patch)
tree4e5622f4b694161d292f729ce1685e4ce0ab9ec0
parent8b2ed691ec6b4cc984fbf24ca1d9d643c9982863 (diff)
Start moving bare uri stuff to str.
-rw-r--r--src/Text/Pandoc/Readers/Markdown.hs38
1 files changed, 19 insertions, 19 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs
index 87efa3cdd..a77199d32 100644
--- a/src/Text/Pandoc/Readers/Markdown.hs
+++ b/src/Text/Pandoc/Readers/Markdown.hs
@@ -1521,7 +1521,6 @@ inline = do
'&' -> return . B.singleton <$> charRef
':' -> emoji
_ -> mzero)
- <|> bareURL
<|> str
<|> symbol) <?> "inline"
@@ -1735,27 +1734,37 @@ str = do
abbrevs <- getOption readerAbbreviations
isSmart <- extensionEnabled Ext_smart <$> getOption readerExtensions
let tryAbbrev t =
- if t `Set.member` abbrevs
+ if isSmart && t `Set.member` abbrevs
then try (do char ' ' <* notFollowedBy (char ' ')
return $ t <> "\160")
<|> return t
else return t
+ let tryBareURI t = mzero
+
+ let isNormalChar c = isAlphaNum c || c == ',' || c == '?' ||
+ c == '(' || c == ')' || c == '/'
let nonSpaceChunk = do
- t <- T.pack <$> many1 (satisfy (\c -> isAlphaNum c ||
- c == ',' || c == '?' ||
- c == '(' || c == ')' ||
- c == '/' )
- <|> try (char '.' <* notFollowedBy (char '.')))
+ t <- T.pack <$> many1
+ (satisfy isNormalChar
+ <|>
+ try (char '.' <* notFollowedBy (char '.')))
updateLastStrPos
- if isSmart
- then B.str <$> tryAbbrev t
- else return $ B.str t
+ tryBareURI t <|> (B.str <$> tryAbbrev t)
let spaceChunk = try $ do
_ <- many1 spaceChar
notFollowedBy newline
return B.space
return . mconcat <$> many1 (nonSpaceChunk <|> spaceChunk)
+bareURL :: PandocMonad m => MarkdownParser m (F Inlines)
+bareURL = do
+ guardEnabled Ext_autolink_bare_uris
+ getState >>= guard . stateAllowLinks
+ try $ do
+ (cls, (orig, src)) <- (("uri",) <$> uri) <|> (("email",) <$> emailAddress)
+ notFollowedBy $ try $ spaces >> htmlTag (~== TagClose ("a" :: Text))
+ return $ return $ B.linkWith ("",[cls],[]) src "" (B.str orig)
+
-- an endline character that can be treated as a space, not a structural break
endline :: PandocMonad m => MarkdownParser m (F Inlines)
endline = try $ do
@@ -1914,15 +1923,6 @@ dropBrackets = dropRB . dropLB
dropLB (T.uncons -> Just ('[',xs)) = xs
dropLB xs = xs
-bareURL :: PandocMonad m => MarkdownParser m (F Inlines)
-bareURL = do
- guardEnabled Ext_autolink_bare_uris
- getState >>= guard . stateAllowLinks
- try $ do
- (cls, (orig, src)) <- (("uri",) <$> uri) <|> (("email",) <$> emailAddress)
- notFollowedBy $ try $ spaces >> htmlTag (~== TagClose ("a" :: Text))
- return $ return $ B.linkWith ("",[cls],[]) src "" (B.str orig)
-
autoLink :: PandocMonad m => MarkdownParser m (F Inlines)
autoLink = try $ do
getState >>= guard . stateAllowLinks