mod: переименование переменных для символов
This commit is contained in:
101
etpgrf/config.py
101
etpgrf/config.py
@@ -35,16 +35,61 @@ EN_ALPHABET_LOWER = frozenset([char.lower() for char in EN_ALPHABET_UPPER])
|
||||
EN_ALPHABET_FULL = EN_ALPHABET_UPPER | EN_ALPHABET_LOWER
|
||||
|
||||
# --- Специальные символы ---
|
||||
NBSP_CHAR = '\u00A0' # Неразрывный пробел ( )
|
||||
SHY_CHAR = '\u00AD' # Мягкий перенос (­)
|
||||
RU_QUOT1_OPEN = '«'
|
||||
RU_QUOT1_CLOSE = '»'
|
||||
RU_QUOT2_OPEN = '„'
|
||||
RU_QUOT2_CLOSE = '“'
|
||||
EN_QUOT1_OPEN = '“'
|
||||
EN_QUOT1_CLOSE = '”'
|
||||
EN_QUOT2_OPEN = '‘'
|
||||
EN_QUOT2_CLOSE = '’'
|
||||
CHAR_NBSP = '\u00a0' # Неразрывный пробел ( )
|
||||
CHAR_SHY = '\u00ad' # Мягкий перенос (­)
|
||||
CHAR_NDASH = '\u2013' # Cреднее тире (– / –)
|
||||
CHAR_MDASH = '\u2014' # Длинное тире (— / —)
|
||||
CHAR_HELLIP = '\u2026' # Многоточие (… / …)
|
||||
CHAR_RU_QUOT1_OPEN = '«' # Русские кавычки открывающие (« / «)
|
||||
CHAR_RU_QUOT1_CLOSE = '»'
|
||||
CHAR_RU_QUOT2_OPEN = '„'
|
||||
CHAR_RU_QUOT2_CLOSE = '“'
|
||||
CHAR_EN_QUOT1_OPEN = '“'
|
||||
CHAR_EN_QUOT1_CLOSE = '”'
|
||||
CHAR_EN_QUOT2_OPEN = '‘'
|
||||
CHAR_EN_QUOT2_CLOSE = '’'
|
||||
CHAR_COPY = '\u00a9' # Символ авторского права / © / ©
|
||||
CHAR_REG = '\u00ae' # Зарегистрированная торговая марка / ® / ®
|
||||
CHAR_COPYP = '\u2117' # Знак звуковой записи / ℗ / ©p;
|
||||
CHAR_TRADE = '\u2122' # Знак торговой марки / ™ / ™
|
||||
CHAR_ARROW_LR_DOUBLE = '\u21d4' # Двойная двунаправленная стрелка / ⇔ / ⇔
|
||||
CHAR_ARROW_L_DOUBLE = '\u21d0' # Двойная стрелка влево / ⇐ / ⇐
|
||||
CHAR_ARROW_R_DOUBLE = '\u21d2' # Двойная стрелка вправо / ⇒ / ⇒
|
||||
CHAR_AP = '\u2248' # Приблизительно равно / ≈ / ≈
|
||||
CHAR_ARROW_L = '\u27f5' # Стрелка влево / ← / ←
|
||||
CHAR_ARROW_R = '\u27f6' # Стрелка вправо / → / →
|
||||
CHAR_ARROW_LR = '\u27f7' # Длинная двунаправленная стрелка ↔ / ↔
|
||||
CHAR_ARROW_L_LONG_DOUBLE = '\u27f8' # Длинная двойная стрелка влево
|
||||
CHAR_ARROW_R_LONG_DOUBLE = '\u27f9' # Длинная двойная стрелка вправо
|
||||
CHAR_ARROW_LR_LONG_DOUBLE = '\u27fa' # Длинная двойная двунаправленная стрелка
|
||||
|
||||
# === КОНСТАНТЫ ПСЕВДОГРАФИКИ ===
|
||||
# Для простых замен "строка -> символ" используем список кортежей.
|
||||
# Порядок важен: более длинные последовательности должны идти раньше более коротких, которые
|
||||
# могут быть их частью (например, '<---' до '---', а та, в свою очередь, до '--').
|
||||
STR_TO_SYMBOL_REPLACEMENTS = [
|
||||
# 5-символьные последовательности
|
||||
('<===>', CHAR_ARROW_LR_LONG_DOUBLE), # Длинная двойная двунаправленная стрелка
|
||||
# 4-символьные последовательности
|
||||
('<===', CHAR_ARROW_L_LONG_DOUBLE), # Длинная двойная стрелка влево
|
||||
('===>', CHAR_ARROW_R_LONG_DOUBLE), # Длинная двойная стрелка вправо
|
||||
('<==>', CHAR_ARROW_LR_DOUBLE), # Двойная двунаправленная стрелка
|
||||
('(tm)', CHAR_TRADE), ('(TM)', CHAR_TRADE), # Знак торговой марки (нижний и верхний регистр)
|
||||
('<-->', CHAR_ARROW_LR), # Длинная двунаправленная стрелка
|
||||
# 3-символьные последовательности
|
||||
('<--', CHAR_ARROW_L), # Стрелка влево
|
||||
('-->', CHAR_ARROW_R), # Стрелка вправо
|
||||
('==>', CHAR_ARROW_R_DOUBLE), # Двойная стрелка вправо
|
||||
('<==', CHAR_ARROW_L_DOUBLE), # Двойная стрелка влево
|
||||
('---', CHAR_MDASH), # Длинное тире
|
||||
('...', CHAR_HELLIP), # Многоточие
|
||||
('(c)', CHAR_COPY), ('(C)', CHAR_COPY), # Знак авторского права (нижний и верхний регистр)
|
||||
('(r)', CHAR_REG), ('(R)', CHAR_REG), # Знак зарегистрированной торговой марки (нижний и верхний регистр)
|
||||
('(p)', CHAR_COPYP), ('(P)', CHAR_COPYP), # Знак права на звукозапись (нижний и верхний регистр)
|
||||
# 2-символьные последовательности
|
||||
('--', CHAR_NDASH), # Среднее тире (дефисные соединения и диапазоны)
|
||||
('~=', CHAR_AP), # Приблизительно равно (≈)
|
||||
]
|
||||
|
||||
# === КОНСТАНТЫ ДЛЯ КОДИРОВАНИЯ HTML-МНЕМНОИКОВ ===
|
||||
# --- ЧЕРНЫЙ СПИСОК: Символы, которые НИКОГДА не нужно кодировать в мнемоники ---
|
||||
@@ -57,8 +102,8 @@ NEVER_ENCODE_CHARS = (frozenset(['!', '#', '%', '(', ')', '*', ',', '.', '/', ':
|
||||
# которые не видны, на глаз и не отличимы друг от друга в обычном тексте, или очень специфичные
|
||||
SAFE_MODE_CHARS_TO_MNEMONIC = frozenset([
|
||||
'<', '>', '&', '"', '\'',
|
||||
SHY_CHAR, # Мягкий перенос (Soft Hyphen) -- ­
|
||||
NBSP_CHAR, # Неразрывный пробел (Non-Breaking Space) --
|
||||
CHAR_SHY, # Мягкий перенос (Soft Hyphen) -- ­
|
||||
CHAR_NBSP, # Неразрывный пробел (Non-Breaking Space) --
|
||||
'\u2002', # Полужирный пробел (En Space) --  
|
||||
'\u2003', # Широкий пробел (Em Space) --  
|
||||
'\u2007', # Цифровой пробел --  
|
||||
@@ -109,13 +154,13 @@ CUSTOM_ENCODE_MAP = {
|
||||
# '\u007b': '{', # { / { / {
|
||||
# '\u007d': '}', # } / } / }
|
||||
# '\u007c': '|', # | / | / | / |
|
||||
# '\u0026': '&', # & / & / &
|
||||
# NBSP_CHAR: ' ', # / /  
|
||||
CHAR_NBSP: ' ', # / /  
|
||||
CHAR_REG: '®', # ® / ® / ® / ®
|
||||
CHAR_COPY: '©', # © / © / ©
|
||||
'\u0022': '"', # " / " / "
|
||||
'\u0026': '&', # & / & / &
|
||||
'\u003e': '>', # > / > / >
|
||||
'\u003c': '<', # < / < / <
|
||||
'\u00ae': '®', # ® / ® / ® / ®
|
||||
'\u003c': '<', # < / < / <
|
||||
'\u00b7': '·', # · / · / · / ·
|
||||
'\u0060': '`', # ` / ` / `
|
||||
'\u00a8': '¨', # ¨ / ¨ / ¨ / ¨ / ¨
|
||||
@@ -127,7 +172,7 @@ CUSTOM_ENCODE_MAP = {
|
||||
'\u2207': '∇', # ∇ / ∇ / ∇
|
||||
'\u2061': '⁡', # / ⁡ / ⁡
|
||||
'\u2221': '∡', # ∡ / ∡ / ∡
|
||||
'\u2248': '≈', # ≈ / ≈ / ≈ / ≈ / ≈ / ≈
|
||||
CHAR_AP: '≈', # ≈ / ≈ / ≈ / ≈ / ≈ / ≈
|
||||
'\u224a': '≊', # ≊ / ≊ / ≊
|
||||
'\u2254': '≔', # ≔ / ≔ / ≔ / ≔
|
||||
'\u224d': '≍', # ≍ / ≍ / ≍
|
||||
@@ -228,12 +273,12 @@ CUSTOM_ENCODE_MAP = {
|
||||
'\u2214': '∔', # ∔ / ∔ / ∔
|
||||
'\u22a1': '⊡', # ⊡ / ⊡ / ⊡
|
||||
'\u21d3': '⇓', # ⇓ / ⇓ / ⇓ / ⇓
|
||||
'\u21d0': '⇐', # ⇐ / ⇐ / ⇐ / ⇐
|
||||
'\u21d4': '⇔', # ⇔ / ⇔ / ⇔ / ⇔ / ⇔
|
||||
'\u27f8': '⟸', # ⟸ / ⟸ / ⟸ / ⟸
|
||||
'\u27fa': '⟺', # ⟺ / ⟺ / ⟺ / ⟺
|
||||
'\u27f9': '⟹', # ⟹ / ⟹ / ⟹ / ⟹
|
||||
'\u21d2': '⇒', # ⇒ / ⇒ / ⇒ / ⇒ / ⇒
|
||||
CHAR_ARROW_R_DOUBLE: '⇒', # ⇒ / ⇒ / ⇒ / ⇒ / ⇒
|
||||
CHAR_ARROW_L_DOUBLE: '⇐', # ⇐ / ⇐ / ⇐ / ⇐
|
||||
CHAR_ARROW_LR_DOUBLE: '⇔', # ⇔ / ⇔ / ⇔ / ⇔ / ⇔
|
||||
CHAR_ARROW_L_LONG_DOUBLE: '⟸', # ⟸ / ⟸ / ⟸ / ⟸
|
||||
CHAR_ARROW_R_LONG_DOUBLE: '⟹', # ⟹ / ⟹ / ⟹ / ⟹
|
||||
CHAR_ARROW_LR_LONG_DOUBLE: '⟺', # ⟺ / ⟺ / ⟺ / ⟺
|
||||
'\u22a8': '⊨', # ⊨ / ⊨ / ⊨
|
||||
'\u21d1': '⇑', # ⇑ / ⇑ / ⇑ / ⇑
|
||||
'\u2202': '∂', # ∂ / ∂ / ∂
|
||||
@@ -337,10 +382,10 @@ CUSTOM_ENCODE_MAP = {
|
||||
'\u2a89': '⪉', # ⪉ / ⪉ / ⪉
|
||||
'\u2268': '≨', # ≨ / ≨ / ≨
|
||||
'\u2a87': '⪇', # ⪇ / ⪇ / ⪇
|
||||
'\u27f5': '⟵', # ⟵ / ⟵ / ⟵ / ⟵
|
||||
'\u27f7': '⟷', # ⟷ / ⟷ / ⟷ / ⟷
|
||||
CHAR_ARROW_L: '⟵', # ⟵ / ⟵ / ⟵ / ⟵
|
||||
CHAR_ARROW_R: '⟶', # ⟶ / ⟶ / ⟶ / ⟶
|
||||
CHAR_ARROW_LR: '⟷', # ⟷ / ⟷ / ⟷ / ⟷
|
||||
'\u27fc': '⟼', # ⟼ / ⟼ / ⟼
|
||||
'\u27f6': '⟶', # ⟶ / ⟶ / ⟶ / ⟶
|
||||
'\u21ac': '↬', # ↬ / ↬ / ↬
|
||||
'\u201e': '„', # „ / „ / „
|
||||
'\u2199': '↙', # ↙ / ↙ / ↙ / ↙
|
||||
@@ -353,7 +398,7 @@ CUSTOM_ENCODE_MAP = {
|
||||
'\u2133': 'ℳ', # ℳ / ℳ / ℳ / ℳ
|
||||
'\u2223': '∣', # ∣ / ∣ / ∣ / ∣ / ∣
|
||||
'\u2213': '∓', # ∓ / ∓ / ∓ / ∓
|
||||
'\u2026': '…', # … / … / …
|
||||
CHAR_HELLIP: '…', # … / … / …
|
||||
'\u22b8': '⊸', # ⊸ / ⊸ / ⊸
|
||||
'\u2249': '≉', # ≉ / ≉ / ≉ / ≉
|
||||
'\u266e': '♮', # ♮ / ♮ / ♮
|
||||
@@ -486,7 +531,7 @@ CUSTOM_ENCODE_MAP = {
|
||||
'\u20db': '⃛', # ⃛ / ⃛ / ⃛
|
||||
'\u2234': '∴', # ∴ / ∴ / ∴ / ∴
|
||||
'\u03d1': 'ϑ', # ϑ / ϑ / ϑ / ϑ
|
||||
'\u2122': '™', # ™ / ™ / ™
|
||||
CHAR_TRADE: '™', # ™ / ™ / ™
|
||||
'\u25b5': '▵', # ▵ / ▵ / ▵
|
||||
'\u225c': '≜', # ≜ / ≜ / ≜
|
||||
'\u21c5': '⇅', # ⇅ / ⇅ / ⇅
|
||||
|
@@ -8,7 +8,7 @@ import regex
|
||||
import logging
|
||||
import html
|
||||
from etpgrf.config import (
|
||||
SHY_CHAR, LANG_RU, LANG_RU_OLD, LANG_EN,
|
||||
CHAR_SHY, 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
|
||||
)
|
||||
@@ -214,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) + SHY_CHAR + split_word_ru(right_part)
|
||||
return split_word_ru(left_part) + CHAR_SHY + split_word_ru(right_part)
|
||||
|
||||
# Основная логика
|
||||
return split_word_ru(word) # Рекурсивно делим слово на части с переносами
|
||||
@@ -316,7 +316,7 @@ class Hyphenator:
|
||||
|
||||
# Рекурсивно обрабатываем обе части и объединяем их символом переноса
|
||||
return (split_word_en(word_to_split[:hyphen_idx]) +
|
||||
SHY_CHAR + split_word_en(word_to_split[hyphen_idx:]))
|
||||
CHAR_SHY + split_word_en(word_to_split[hyphen_idx:]))
|
||||
|
||||
# --- Конец логики для английского языка ---
|
||||
return split_word_en(word)
|
||||
|
@@ -3,8 +3,9 @@
|
||||
|
||||
import regex
|
||||
import logging
|
||||
from .config import LANG_RU, LANG_EN, RU_QUOT1_OPEN, RU_QUOT1_CLOSE, EN_QUOT1_OPEN, EN_QUOT1_CLOSE, \
|
||||
RU_QUOT2_OPEN, RU_QUOT2_CLOSE, EN_QUOT2_OPEN, EN_QUOT2_CLOSE
|
||||
from .config import (LANG_RU, LANG_EN, CHAR_RU_QUOT1_OPEN, CHAR_RU_QUOT1_CLOSE, CHAR_EN_QUOT1_OPEN,
|
||||
CHAR_EN_QUOT1_CLOSE, CHAR_RU_QUOT2_OPEN, CHAR_RU_QUOT2_CLOSE, CHAR_EN_QUOT2_OPEN,
|
||||
CHAR_EN_QUOT2_CLOSE)
|
||||
from .comutil import parse_and_validate_langs
|
||||
|
||||
# --- Настройки логирования ---
|
||||
@@ -13,8 +14,8 @@ logger = logging.getLogger(__name__)
|
||||
# Определяем стили кавычек для разных языков
|
||||
# Формат: (('открывающая_ур1', 'закрывающая_ур1'), ('открывающая_ур2', 'закрывающая_ур2'))
|
||||
_QUOTE_STYLES = {
|
||||
LANG_RU: ((RU_QUOT1_OPEN, RU_QUOT1_CLOSE), (RU_QUOT2_OPEN, RU_QUOT2_CLOSE)),
|
||||
LANG_EN: ((EN_QUOT1_OPEN, EN_QUOT1_CLOSE), (EN_QUOT2_OPEN, EN_QUOT2_CLOSE)),
|
||||
LANG_RU: ((CHAR_RU_QUOT1_OPEN, CHAR_RU_QUOT1_CLOSE), (CHAR_RU_QUOT2_OPEN, CHAR_RU_QUOT2_CLOSE)),
|
||||
LANG_EN: ((CHAR_EN_QUOT1_OPEN, CHAR_EN_QUOT1_CLOSE), (CHAR_EN_QUOT2_OPEN, CHAR_EN_QUOT2_CLOSE)),
|
||||
}
|
||||
|
||||
|
||||
|
@@ -9,7 +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.config import CHAR_NBSP
|
||||
from etpgrf.defaults import etpgrf_settings
|
||||
|
||||
# --- Наборы коротких слов для разных языков ---
|
||||
@@ -114,11 +114,11 @@ class Unbreakables:
|
||||
|
||||
# 1. Обработка слов, ПОСЛЕ которых нужен неразрывный пробел ("в дом" -> "в дом")
|
||||
if self._pre_pattern:
|
||||
processed_text = self._pre_pattern.sub(r"\g<1>" + NBSP_CHAR, processed_text)
|
||||
processed_text = self._pre_pattern.sub(r"\g<1>" + CHAR_NBSP, processed_text)
|
||||
|
||||
# 2. Обработка частиц, ПЕРЕД которыми нужен неразрывный пробел ("сказал бы" -> "сказал бы")
|
||||
if self._post_pattern:
|
||||
# \g<1> - это пробел, \g<2> - это частица
|
||||
processed_text = self._post_pattern.sub(NBSP_CHAR + r"\g<2>", processed_text)
|
||||
processed_text = self._post_pattern.sub(CHAR_NBSP + r"\g<2>", processed_text)
|
||||
|
||||
return processed_text
|
||||
|
Reference in New Issue
Block a user