From 7cab6758097d2511b9cdfd47167d644e7145af16 Mon Sep 17 00:00:00 2001 From: Al Date: Sat, 18 Feb 2017 11:28:14 -0800 Subject: [PATCH] [openaddresses] adding random formatting to Colombian house numbers that match the {calle}-{building number} format --- scripts/geodata/openaddresses/formatter.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/scripts/geodata/openaddresses/formatter.py b/scripts/geodata/openaddresses/formatter.py index 38649e03..f68ada50 100644 --- a/scripts/geodata/openaddresses/formatter.py +++ b/scripts/geodata/openaddresses/formatter.py @@ -48,6 +48,8 @@ number_space_letter_regex = re.compile('^[\d]+\s+[a-z]$', re.I) number_slash_number_regex = re.compile('^(?:[\d]+|[a-z]|[\d]+[a-z]|[a-z][\d]+)[\s]*/[\s]*(?:[\d]+|[a-z]|[\d]+[a-z]|[a-z][\d]+)$', re.I) number_fraction_regex = re.compile('^(?:[\d]+\s+)?(?:1[\s]*/[\s]*[234]|2[\s]*/[\s]*3)$') +colombian_standard_house_number_regex = re.compile('^(\d+[\s]*[a-z]?) ([a-z]?[\d]+[\s]*[a-z]?)?', re.I) + dutch_house_number_regex = re.compile('([\d]+)( [a-z])?( [\d]+)?', re.I) SPANISH = 'es' @@ -198,6 +200,23 @@ class OpenAddressesFormatter(object): return house_number return cls.chinese_annex_regex.sub(u'\\1号', house_number) + @classmethod + def format_colombian_house_number(cls, house_number): + match = colombian_standard_house_number_regex.match(house_number) + if match: + separator = random.choice((u'-', u' - ', u' ')) + + cross_street, building_number = match.groups() + + if u' ' in cross_street and random.choice((True, False)): + cross_street = cross_street.replace(u' ', u'') + + if u' ' in building_number and random.choice((True, False)): + building_number = building_number.replace(u' ', u'') + + return separator.join([cross_street, building_number]) + return house_number + def get_property(self, key, *configs): for config in configs: value = config.get(key, None) @@ -424,6 +443,9 @@ class OpenAddressesFormatter(object): if language == CHINESE: house_number = self.format_chinese_house_number(house_number) + if country_dir == Countries.COLOMBIA: + house_number = self.format_colombian_house_number(house_number) + if house_number is not None: components[AddressFormatter.HOUSE_NUMBER] = house_number