add: LayoutProcessor - обработка едениц измерения (кажется все)
This commit is contained in:
@@ -76,23 +76,25 @@ class LayoutProcessor:
|
||||
elif isinstance(self.process_units, (list, tuple, set)):
|
||||
all_post_units.extend(self.process_units)
|
||||
|
||||
units_pattern_part = ''
|
||||
|
||||
# Общий паттерн для всех остальных единиц
|
||||
if all_post_units:
|
||||
sorted_units = sorted(all_post_units, key=len, reverse=True)
|
||||
units_pattern_part = '|'.join(map(regex.escape, sorted_units))
|
||||
# Создаем "чистый" паттерн без точек для универсальности
|
||||
units_pattern_part_clean = '|'.join(map(regex.escape, [u.replace('.', '') for u in sorted_units]))
|
||||
# Создаем паттерн, который включает единицы с точками, для простых замен
|
||||
units_pattern_part_full = '|'.join(map(regex.escape, sorted_units))
|
||||
|
||||
if units_pattern_part:
|
||||
if units_pattern_part_full:
|
||||
# Простые единицы: число + единица
|
||||
self._post_units_pattern = regex.compile(rf'({self._NUMBER_PATTERN})\s+({units_pattern_part})(?!\w)')
|
||||
self._post_units_pattern = regex.compile(rf'({self._NUMBER_PATTERN})\s+({units_pattern_part_full})(?!\w)')
|
||||
# Паттерн для составных единиц: ищет пару "единица." + "единица", разделенную пробелами (или без них).
|
||||
# Обязательное наличие точки `\.` после первой единицы делает цикл обработки безопасным.
|
||||
self._complex_unit_pattern = regex.compile(r'\b(' + units_pattern_part + r')\.(\s*)(' + units_pattern_part + r')(?!\w)')
|
||||
# Используем "чистый" паттерн, чтобы правило работало независимо от того, как определена единица ('в' или 'в.')
|
||||
self._complex_unit_pattern = regex.compile(r'\b(' + units_pattern_part_clean + r')\.(\s*)(' + units_pattern_part_clean + r')(?!\w)')
|
||||
# Паттерн для математических операций между единицами
|
||||
math_ops_pattern = '|'.join(map(regex.escape, UNIT_MATH_OPERATORS))
|
||||
self._math_unit_pattern = regex.compile(
|
||||
r'\b(' + units_pattern_part + r')\s*(' + math_ops_pattern + r')\s*(' + units_pattern_part + r')(?!\w)')
|
||||
r'\b(' + units_pattern_part_clean + r')\s*(' + math_ops_pattern + r')\s*(' + units_pattern_part_clean + r')(?!\w)')
|
||||
|
||||
# Паттерн для пред-позиционных единиц
|
||||
self._pre_units_pattern = regex.compile(
|
||||
|
Reference in New Issue
Block a user