[parser/formatting] Appendinge suburb between the road line and any subsequent lines for all bottom-up address formats. Effectively inserts neighborhoods into our version without making the OpenCage formats overly verbose. Also fixing post-format replace with group capture

This commit is contained in:
Al
2015-10-24 01:29:21 -04:00
parent da53d7ebac
commit 2d4b3a6e2f

View File

@@ -97,8 +97,21 @@ class AddressFormatter(object):
subprocess.check_call(['git', 'clone', FORMATTER_GIT_REPO, self.formatter_repo_path])
def load_config(self):
self.config = yaml.load(open(os.path.join(self.formatter_repo_path,
config = yaml.load(open(os.path.join(self.formatter_repo_path,
'conf/countries/worldwide.yaml')))
for key, value in config.items():
if hasattr(value, 'items'):
address_template = value.get('address_template')
if address_template:
value['address_template'] = self.add_suburb_tags(address_template)
post_format_replacements = value.get('postformat_replace')
if post_format_replacements:
value['postformat_replace'] = [[pattern, replacement.replace('$', '\\')] for pattern, replacement in post_format_replacements]
else:
address_template = value
config[key] = self.add_suburb_tags(value)
self.config = config
def component_aliases(self):
self.aliases = OrderedDict()
@@ -119,6 +132,18 @@ class AddressFormatter(object):
def country_template(self, c):
return self.config.get(c, self.config['default'])
post_suburb_keys = re.compile('|'.join((CITY, STATE, STATE_DISTRICT, POSTCODE, COUNTRY)), re.I)
def add_suburb_tags(self, template):
suburb_included = 'suburb' in template
new_components = []
for line in template.split('\n'):
post_suburb = self.post_suburb_keys.search(line)
new_components.append(line.rstrip('\n'))
if u'road' in line and not suburb_included and not post_suburb:
new_components.append(u'{{{suburb}}}')
return u'\n'.join(new_components)
def render_template(self, template, components, tagged=False):
def render_first(text):
text = pystache.render(text, **components)