git.iko.soy/typeable/pandoc
on master help sign in
Introduced a new map, reverseEntityTable, for lookups
0114f68fiddlosopher
src/Text/Pandoc/Entities.hs+8−6
@@ -43,11 +43,7 @@ import qualified Data.Map as Map
43
43
44-- | Returns a string containing an entity reference for the character.
44-- | Returns a string containing an entity reference for the character.
45charToEntity :: Char -> String
45charToEntity :: Char -> String
46−charToEntity char =
47− let matches = Map.filter (== char) entityTable in
48− if Map.null matches
49− then charToNumericalEntity char
46+charToEntity char = Map.findWithDefault (charToNumericalEntity char) char reverseEntityTable
50− else head $ Map.keys matches
51
47
52-- | Returns a string containing a numerical entity reference for the char.
48-- | Returns a string containing a numerical entity reference for the char.
53charToNumericalEntity :: Char -> String
49charToNumericalEntity :: Char -> String
@@ -113,7 +109,13 @@ decodeEntities str =
113 Right result -> result
109 Right result -> result
114
110
115entityTable :: Map.Map String Char
111entityTable :: Map.Map String Char
116−entityTable = Map.fromList [
112+entityTable = Map.fromList entityTableList
113+
114+reverseEntityTable :: Map.Map Char String
115+reverseEntityTable = Map.fromList $ map (\(a,b) -> (b,a)) entityTableList
116+
117+entityTableList :: [(String, Char)]
118+entityTableList = [
117 (""", chr 34),
119 (""", chr 34),
118 ("&", chr 38),
120 ("&", chr 38),
119 ("<", chr 60),
121 ("<", chr 60),