1 # SPDX-License-Identifier: GPL-2.0-only
3 # This file is part of Nominatim. (https://nominatim.org)
5 # Copyright (C) 2022 by the Nominatim developer community.
6 # For a full list of authors see the git log.
8 Sanitizer that splits lists of names into their components.
11 delimiters: Define the set of characters to be used for
12 splitting the list. (default: ',;')
14 from typing import Callable
16 from nominatim.tokenizer.sanitizers.base import ProcessInfo
17 from nominatim.tokenizer.sanitizers.config import SanitizerConfig
19 def create(config: SanitizerConfig) -> Callable[[ProcessInfo], None]:
20 """ Create a name processing function that splits name values with
21 multiple values into their components.
23 regexp = config.get_delimiter()
25 def _process(obj: ProcessInfo) -> None:
30 for name in obj.names:
31 split_names = regexp.split(name.name)
32 if len(split_names) == 1:
33 new_names.append(name)
35 new_names.extend(name.clone(name=n) for n in split_names if n)