mod: спецсимволы ( и ­) берутся из config.py
This commit is contained in:
@@ -8,7 +8,7 @@ import regex
|
|||||||
import logging
|
import logging
|
||||||
import html
|
import html
|
||||||
from etpgrf.config import (
|
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,
|
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
|
EN_VOWELS_UPPER, EN_CONSONANTS_UPPER # , EN_ALPHABET_UPPER
|
||||||
)
|
)
|
||||||
@@ -67,10 +67,6 @@ class Hyphenator:
|
|||||||
self._en_alphabet_upper: frozenset = frozenset()
|
self._en_alphabet_upper: frozenset = frozenset()
|
||||||
# Загружает наборы символов на основе self.langs
|
# Загружает наборы символов на основе self.langs
|
||||||
self._load_language_resources_for_hyphenation()
|
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},"
|
logger.debug(f"Hyphenator `__init__`. Langs: {self.langs},"
|
||||||
@@ -218,7 +214,7 @@ class Hyphenator:
|
|||||||
left_part = word_to_split[:hyphen_idx]
|
left_part = word_to_split[:hyphen_idx]
|
||||||
right_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) # Рекурсивно делим слово на части с переносами
|
return split_word_ru(word) # Рекурсивно делим слово на части с переносами
|
||||||
@@ -320,7 +316,7 @@ class Hyphenator:
|
|||||||
|
|
||||||
# Рекурсивно обрабатываем обе части и объединяем их символом переноса
|
# Рекурсивно обрабатываем обе части и объединяем их символом переноса
|
||||||
return (split_word_en(word_to_split[:hyphen_idx]) +
|
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)
|
return split_word_en(word)
|
||||||
|
@@ -9,6 +9,7 @@ import logging
|
|||||||
import html
|
import html
|
||||||
from etpgrf.config import LANG_RU, LANG_RU_OLD, LANG_EN # , KEY_NBSP, ALL_ENTITIES
|
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.comutil import parse_and_validate_langs
|
||||||
|
from etpgrf.config import NBSP_CHAR
|
||||||
from etpgrf.defaults import etpgrf_settings
|
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):
|
def __init__(self, langs: str | list[str] | tuple[str, ...] | frozenset[str] | None = None):
|
||||||
self.langs = parse_and_validate_langs(langs)
|
self.langs = parse_and_validate_langs(langs)
|
||||||
|
|
||||||
# Получаем символ неразрывного пробела напрямую из стандартной библиотеки
|
|
||||||
self._nbsp_char = chr(html.entities.name2codepoint['nbsp']) # <--- ИЗМЕНИТЬ
|
|
||||||
|
|
||||||
# --- 1. Собираем наборы слов для обработки ---
|
# --- 1. Собираем наборы слов для обработки ---
|
||||||
pre_words = set()
|
pre_words = set()
|
||||||
post_words = set()
|
post_words = set()
|
||||||
@@ -116,11 +114,11 @@ class Unbreakables:
|
|||||||
|
|
||||||
# 1. Обработка слов, ПОСЛЕ которых нужен неразрывный пробел ("в дом" -> "в дом")
|
# 1. Обработка слов, ПОСЛЕ которых нужен неразрывный пробел ("в дом" -> "в дом")
|
||||||
if self._pre_pattern:
|
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. Обработка частиц, ПЕРЕД которыми нужен неразрывный пробел ("сказал бы" -> "сказал бы")
|
# 2. Обработка частиц, ПЕРЕД которыми нужен неразрывный пробел ("сказал бы" -> "сказал бы")
|
||||||
if self._post_pattern:
|
if self._post_pattern:
|
||||||
# \g<1> - это пробел, \g<2> - это частица
|
# \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
|
return processed_text
|
||||||
|
Reference in New Issue
Block a user