Simplify intern_dict

This commit is contained in:
Erik Johnston 2016-03-23 16:34:59 +00:00
parent 2f0180b09e
commit 8122ad7bab

View file

@ -65,27 +65,20 @@ def intern_string(string):
def intern_dict(dictionary): def intern_dict(dictionary):
"""Takes a dictionary and interns well known keys and their values """Takes a dictionary and interns well known keys and their values
""" """
return _intern_known_values({ return {
_intern_key(key): value for key, value in dictionary.items() KNOWN_KEYS.get(key, key): _intern_known_values(key, value)
}) for key, value in dictionary.items()
}
def _intern_known_values(dictionary): def _intern_known_values(key, value):
intern_str_keys = ("event_id", "room_id") intern_str_keys = ("event_id", "room_id")
intern_unicode_keys = ("sender", "user_id", "type", "state_key") intern_unicode_keys = ("sender", "user_id", "type", "state_key")
for key in intern_str_keys: if key in intern_str_keys:
val = dictionary.get(key, None) return intern(value.encode('ascii'))
if val is not None:
dictionary[key] = intern(val.encode('ascii'))
for key in intern_unicode_keys: if key in intern_unicode_keys:
val = dictionary.get(key, None) return intern_string(value)
if val is not None:
dictionary[key] = intern_string(val)
return dictionary return value
def _intern_key(key):
return KNOWN_KEYS.get(key, key)