1 # SPDX-License-Identifier: GPL-3.0-or-later
 
   3 # This file is part of Nominatim. (https://nominatim.org)
 
   5 # Copyright (C) 2024 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 .base import ProcessInfo
 
  17 from .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)