From 78b78bf9498d45177a27cd0659cc5a87c3f07027 Mon Sep 17 00:00:00 2001 From: erjemin Date: Mon, 11 Aug 2025 22:19:40 +0300 Subject: [PATCH] =?UTF-8?q?mod:=20=D1=81=D0=BF=D0=B5=D1=86=D1=81=D0=B8?= =?UTF-8?q?=D0=BC=D0=B2=D0=BE=D0=BB=D1=8B=20( =20=D0=B8=20­)=20?= =?UTF-8?q?=D0=B1=D0=B5=D1=80=D1=83=D1=82=D1=81=D1=8F=20=D0=B8=D0=B7=20con?= =?UTF-8?q?fig.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- etpgrf/hyphenation.py | 10 +++------- etpgrf/unbreakables.py | 8 +++----- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/etpgrf/hyphenation.py b/etpgrf/hyphenation.py index 0aeaa15..cacb885 100755 --- a/etpgrf/hyphenation.py +++ b/etpgrf/hyphenation.py @@ -8,7 +8,7 @@ import regex import logging import html from etpgrf.config import ( - LANG_RU, LANG_RU_OLD, LANG_EN, + SHY_CHAR, LANG_RU, LANG_RU_OLD, LANG_EN, RU_VOWELS_UPPER, RU_CONSONANTS_UPPER, RU_J_SOUND_UPPER, RU_SIGNS_UPPER, # RU_ALPHABET_UPPER, EN_VOWELS_UPPER, EN_CONSONANTS_UPPER # , EN_ALPHABET_UPPER ) @@ -67,10 +67,6 @@ class Hyphenator: self._en_alphabet_upper: frozenset = frozenset() # Загружает наборы символов на основе self.langs self._load_language_resources_for_hyphenation() - # Так как внутри типографа кодировка html, то символ переноса независим от режима - # self._split_code: str = ALL_ENTITIES[KEY_SHY][0] - # Получаем символ неразрывного пробела напрямую из стандартной библиотеки - self._split_code = chr(html.entities.name2codepoint['shy']) # <--- ИЗМЕНИТЬ # ... logger.debug(f"Hyphenator `__init__`. Langs: {self.langs}," @@ -218,7 +214,7 @@ class Hyphenator: left_part = word_to_split[:hyphen_idx] right_part = word_to_split[hyphen_idx:] # Рекурсивно делим левую и правую части и соединяем их через символ переноса - return split_word_ru(left_part) + self._split_code + split_word_ru(right_part) + return split_word_ru(left_part) + SHY_CHAR + split_word_ru(right_part) # Основная логика return split_word_ru(word) # Рекурсивно делим слово на части с переносами @@ -320,7 +316,7 @@ class Hyphenator: # Рекурсивно обрабатываем обе части и объединяем их символом переноса return (split_word_en(word_to_split[:hyphen_idx]) + - self._split_code + split_word_en(word_to_split[hyphen_idx:])) + SHY_CHAR + split_word_en(word_to_split[hyphen_idx:])) # --- Конец логики для английского языка --- return split_word_en(word) diff --git a/etpgrf/unbreakables.py b/etpgrf/unbreakables.py index 78d254c..00e8e12 100644 --- a/etpgrf/unbreakables.py +++ b/etpgrf/unbreakables.py @@ -9,6 +9,7 @@ import logging import html from etpgrf.config import LANG_RU, LANG_RU_OLD, LANG_EN # , KEY_NBSP, ALL_ENTITIES from etpgrf.comutil import parse_and_validate_langs +from etpgrf.config import NBSP_CHAR from etpgrf.defaults import etpgrf_settings # --- Наборы коротких слов для разных языков --- @@ -67,9 +68,6 @@ class Unbreakables: def __init__(self, langs: str | list[str] | tuple[str, ...] | frozenset[str] | None = None): self.langs = parse_and_validate_langs(langs) - # Получаем символ неразрывного пробела напрямую из стандартной библиотеки - self._nbsp_char = chr(html.entities.name2codepoint['nbsp']) # <--- ИЗМЕНИТЬ - # --- 1. Собираем наборы слов для обработки --- pre_words = set() post_words = set() @@ -116,11 +114,11 @@ class Unbreakables: # 1. Обработка слов, ПОСЛЕ которых нужен неразрывный пробел ("в дом" -> "в дом") if self._pre_pattern: - processed_text = self._pre_pattern.sub(r"\g<1>" + self._nbsp_char, processed_text) + processed_text = self._pre_pattern.sub(r"\g<1>" + NBSP_CHAR, processed_text) # 2. Обработка частиц, ПЕРЕД которыми нужен неразрывный пробел ("сказал бы" -> "сказал бы") if self._post_pattern: # \g<1> - это пробел, \g<2> - это частица - processed_text = self._post_pattern.sub(self._nbsp_char + r"\g<2>", processed_text) + processed_text = self._post_pattern.sub(NBSP_CHAR + r"\g<2>", processed_text) return processed_text