aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <[email protected]>2021-10-03 00:10:46 -0700
committerJohn MacFarlane <[email protected]>2021-10-03 00:10:46 -0700
commit87cf1f01c118fd6abed50f220e397d15979b2e0d (patch)
tree3ad9f00d8533056fc1f94f3b8bbb41517eb2b7a3
parent2c7b3508233438bd3a1f2577e5320e5198d12012 (diff)
Handle abbreviations as AST transform in Markdown reader.
-rw-r--r--src/Text/Pandoc/Readers/Markdown.hs17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs
index 850c21a3b..4733162c9 100644
--- a/src/Text/Pandoc/Readers/Markdown.hs
+++ b/src/Text/Pandoc/Readers/Markdown.hs
@@ -65,7 +65,22 @@ readMarkdown opts s = do
parsed <- readWithM parseMarkdown def{ stateOptions = opts }
(ensureFinalNewlines 3 (toSources s))
case parsed of
- Right result -> return result
+ Right result -> do
+ if extensionEnabled Ext_smart (readerExtensions opts)
+ then do
+ let escForRegex = T.replace "." "\\."
+ let re = T.intercalate "|"
+ (map escForRegex (Set.toList (readerAbbreviations opts)))
+ let fixAbbrev (Str t) = Str (fixAbbrev' t)
+ fixAbbrev x = x
+ fixAbbrev' t =
+ let (a,b,c) = t =~ re
+ in case T.uncons c of
+ Just (' ', t') ->
+ a <> b <> "\160" <> fixAbbrev' t'
+ _ -> t
+ return $ walk fixAbbrev result
+ else return result
Left e -> throwError e
-- | Read a YAML string and convert it to pandoc metadata.