]> git.openstreetmap.org Git - nominatim.git/blobdiff - src/nominatim_api/query_preprocessing/regex_replace.py
release 5.1.0.post5
[nominatim.git] / src / nominatim_api / query_preprocessing / regex_replace.py
index b711d54b7f6c0d823c73493c8d3dd6ad9332e4a0..b3a02495eeb2c836ef5936f59fff9bc96f1757c9 100644 (file)
@@ -5,7 +5,11 @@
 # Copyright (C) 2025 by the Nominatim developer community.
 # For a full list of authors see the git log.
 """
 # Copyright (C) 2025 by the Nominatim developer community.
 # For a full list of authors see the git log.
 """
-This file replaces values based on pre-defined regex rules:
+This preprocessor replaces values in a given input based on pre-defined regex rules.
+
+Arguments:
+    pattern: Regex pattern to be applied on the input
+    replace: The string that it is to be replaced with
 """
 from typing import List
 import re
 """
 from typing import List
 import re
@@ -16,8 +20,10 @@ from ..search.query import Phrase
 
 
 class _GenericPreprocessing:
 
 
 class _GenericPreprocessing:
+    """Perform replacements to input phrases using custom regex patterns."""
 
     def __init__(self, config: QueryConfig) -> None:
 
     def __init__(self, config: QueryConfig) -> None:
+        """Initialise the _GenericPreprocessing class with patterns from the ICU config file."""
         self.config = config
 
         match_patterns = self.config.get('replacements', 'Key not found')
         self.config = config
 
         match_patterns = self.config.get('replacements', 'Key not found')
@@ -26,22 +32,21 @@ class _GenericPreprocessing:
             ]
 
     def split_phrase(self, phrase: Phrase) -> Phrase:
             ]
 
     def split_phrase(self, phrase: Phrase) -> Phrase:
-        """
-        This function performs replacements on the given text using regex patterns.
-        """
+        """This function performs replacements on the given text using regex patterns."""
         for item in self.compiled_patterns:
             phrase.text = item[0].sub(item[1], phrase.text)
 
         return phrase
 
     def __call__(self, phrases: List[Phrase]) -> List[Phrase]:
         for item in self.compiled_patterns:
             phrase.text = item[0].sub(item[1], phrase.text)
 
         return phrase
 
     def __call__(self, phrases: List[Phrase]) -> List[Phrase]:
-        """Apply regex replacements to the given addresses.
+        """
+        Return the final Phrase list.
+        Returns an empty list if there is nothing left after split_phrase.
         """
         result = [p for p in map(self.split_phrase, phrases) if p.text.strip()]
         """
         result = [p for p in map(self.split_phrase, phrases) if p.text.strip()]
-        return result if result else []
+        return result
 
 
 def create(config: QueryConfig) -> QueryProcessingFunc:
 
 
 def create(config: QueryConfig) -> QueryProcessingFunc:
-    """ Create a function for generic preprocessing.
-    """
+    """ Create a function for generic preprocessing."""
     return _GenericPreprocessing(config)
     return _GenericPreprocessing(config)