[categories] Method to determine which keys to check for category matches given a dict of OSM tags
This commit is contained in:
@@ -20,7 +20,7 @@ class CategoryConfig(object):
|
|||||||
self.language_categories_singular = {}
|
self.language_categories_singular = {}
|
||||||
self.language_categories_plural = {}
|
self.language_categories_plural = {}
|
||||||
|
|
||||||
self.property_names = set()
|
self.language_property_names = defaultdict(set)
|
||||||
|
|
||||||
if not os.path.exists(base_dir):
|
if not os.path.exists(base_dir):
|
||||||
raise RuntimeError('{} does not exist'.format(base_dir))
|
raise RuntimeError('{} does not exist'.format(base_dir))
|
||||||
@@ -39,7 +39,7 @@ class CategoryConfig(object):
|
|||||||
reader.next() # headers
|
reader.next() # headers
|
||||||
|
|
||||||
for key, value, is_plural, phrase in reader:
|
for key, value, is_plural, phrase in reader:
|
||||||
self.property_names.add(key)
|
self.language_property_names[lang].add(key)
|
||||||
is_plural = bool(int(is_plural))
|
is_plural = bool(int(is_plural))
|
||||||
if is_plural:
|
if is_plural:
|
||||||
plural_rules[(key, value)].append(phrase)
|
plural_rules[(key, value)].append(phrase)
|
||||||
@@ -55,6 +55,10 @@ class CategoryConfig(object):
|
|||||||
self.language_categories_plural = {key: dict(value) for key, value
|
self.language_categories_plural = {key: dict(value) for key, value
|
||||||
in six.iteritems(self.language_categories_plural)}
|
in six.iteritems(self.language_categories_plural)}
|
||||||
|
|
||||||
|
def has_keys(self, language, keys):
|
||||||
|
prop_names = self.language_property_names.get(language, set())
|
||||||
|
return [k for k in keys if k in prop_names]
|
||||||
|
|
||||||
def get_phrase(self, language, key, value, is_plural=False):
|
def get_phrase(self, language, key, value, is_plural=False):
|
||||||
config = self.language_categories_singular if not is_plural else self.language_categories_plural
|
config = self.language_categories_singular if not is_plural else self.language_categories_plural
|
||||||
if language not in config:
|
if language not in config:
|
||||||
|
|||||||
Reference in New Issue
Block a user