X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/732cd27d2e3033c11eca5b51cc2e6204c5737def..9fc235d6706a92f615761d35690a4ad550045ea5:/nominatim/tokenizer/sanitizers/split_name_list.py?ds=inline diff --git a/nominatim/tokenizer/sanitizers/split_name_list.py b/nominatim/tokenizer/sanitizers/split_name_list.py index f1514203..7d0667b4 100644 --- a/nominatim/tokenizer/sanitizers/split_name_list.py +++ b/nominatim/tokenizer/sanitizers/split_name_list.py @@ -1,30 +1,34 @@ +# SPDX-License-Identifier: GPL-2.0-only +# +# This file is part of Nominatim. (https://nominatim.org) +# +# Copyright (C) 2022 by the Nominatim developer community. +# For a full list of authors see the git log. """ -Name processor that splits name values with multiple values into their components. +Sanitizer that splits lists of names into their components. + +Arguments: + delimiters: Define the set of characters to be used for + splitting the list. (default: ',;') """ -import re +from typing import Callable -from nominatim.errors import UsageError +from nominatim.tokenizer.sanitizers.base import ProcessInfo +from nominatim.tokenizer.sanitizers.config import SanitizerConfig -def create(func): +def create(config: SanitizerConfig) -> Callable[[ProcessInfo], None]: """ Create a name processing function that splits name values with - multiple values into their components. The optional parameter - 'delimiters' can be used to define the characters that should be used - for splitting. The default is ',;'. + multiple values into their components. """ - delimiter_set = set(func.get('delimiters', ',;')) - if not delimiter_set: - raise UsageError("Set of delimiters in split-name-list sanitizer is empty.") - - regexp = re.compile('\\s*[{}]\\s*'.format(''.join('\\' + d for d in delimiter_set))) + regexp = config.get_delimiter() - def _process(obj): + def _process(obj: ProcessInfo) -> None: if not obj.names: return new_names = [] for name in obj.names: split_names = regexp.split(name.name) - print(split_names) if len(split_names) == 1: new_names.append(name) else: