aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/XML.hs13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/Text/Pandoc/XML.hs b/src/Text/Pandoc/XML.hs
index 169951591..4c5d8d351 100644
--- a/src/Text/Pandoc/XML.hs
+++ b/src/Text/Pandoc/XML.hs
@@ -114,9 +114,16 @@ toHtml5Entities = T.concatMap go
Nothing -> T.pack ("&#" ++ show (ord c) ++ ";")
html5EntityMap :: M.Map Char Text
-html5EntityMap = M.fromList [(c, T.takeWhile (/=';') (T.pack ent))
- | (ent@(_:_), [c]) <- htmlEntities
- , last ent == ';']
+html5EntityMap = foldr go mempty htmlEntities
+ where go (ent, s) entmap =
+ case s of
+ [c] -> M.insertWith
+ (\new old -> if T.length new > T.length old
+ then old
+ else new) c ent' entmap
+ where ent' = T.takeWhile (/=';') (T.pack ent)
+ _ -> entmap
+
-- Unescapes XML entities
fromEntities :: String -> String