else:
raise UsageError(f"Invalid entry 'postcode' for country '{ccode}'")
+ default_pattern = config.get('default-pattern')
+ if default_pattern is not None and isinstance(default_pattern, str):
+ self.default_matcher = _PostcodeMatcher('', {'pattern': default_pattern})
+ else:
+ self.default_matcher = None
+
def __call__(self, obj):
if not obj.address:
obj.address.pop(pos)
else:
postcode.name = formatted[0]
- postcode.set_attr('lookup', formatted[1])
+ postcode.set_attr('variant', formatted[1])
def scan(self, postcode, country):
if country in self.country_without_postcode:
return None
- matcher = self.country_matcher.get(country)
- if matcher is not None:
- match = matcher.match(postcode)
- if match is None:
- return None
- return matcher.normalize(match), ' '.join(match.groups())
+ matcher = self.country_matcher.get(country, self.default_matcher)
+ if matcher is None:
+ return postcode.upper(), ''
+
+ match = matcher.match(postcode)
+ if match is None:
+ return None
+
+ return matcher.normalize(match), ' '.join(match.groups())
- return postcode.upper(), ''