git.iko.soy/typeable/pandoc
on master help sign in
Introduced a new map, reverseEntityTable, for lookups

of entity by character, in Entities.hs. This yields a small performance improvement. git-svn-id: https://pandoc.googlecode.com/svn/trunk@534 788f1e2b-df1e-0410-8736-df70ead52e1b

commit0114f68d21b99a5bd1a96225e74440f05da2ce1c authorfiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> dateWed 14 Feb 2007, 18:02 (20 years ago) parent1266b18
1 file changed+8−6
src/Text/Pandoc/Entities.hs+8−6
src/Text/Pandoc/Entities.hs+8−6
@@ -43,11 +43,7 @@ import qualified Data.Map as Map
4343
4444-- | Returns a string containing an entity reference for the character.
4545charToEntity :: Char -> String
46−charToEntity char =
47− let matches = Map.filter (== char) entityTable in
48− if Map.null matches
49− then charToNumericalEntity char
50− else head $ Map.keys matches
46+charToEntity char = Map.findWithDefault (charToNumericalEntity char) char reverseEntityTable
5147
5248-- | Returns a string containing a numerical entity reference for the char.
5349charToNumericalEntity :: Char -> String
@@ -113,7 +109,13 @@ decodeEntities str =
113109 Right result -> result
114110
115111entityTable :: 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 = [
117119 ("&quot;", chr 34),
118120 ("&amp;", chr 38),
119121 ("&lt;", chr 60),