add: codec (внутренний utf-8 и мнемокод для in/out
This commit is contained in:
@@ -19,21 +19,28 @@ SUPPORTED_LANGS = frozenset([LANG_RU, LANG_RU_OLD, LANG_EN])
|
||||
# DEFAULT_HYP_MAX_LEN = 10 # Максимальная длина слова без переносов
|
||||
# DEFAULT_HYP_MIN_LEN = 3 # Минимальный "хвост" слова для переноса
|
||||
|
||||
# ----------------- соответствия `unicode` и `mnemonic` для типографа
|
||||
# === Соответствия `unicode` и `mnemonic` для типографа
|
||||
|
||||
# Переносы
|
||||
KEY_SHY = 'SHY'
|
||||
SHY_ENTITIES = {
|
||||
'SHY': ('\u00AD', '­'), # Мягкий перенос
|
||||
KEY_SHY: ('\u00AD', '­'), # Мягкий перенос
|
||||
}
|
||||
|
||||
# Пробелы и неразрывные пробелы
|
||||
KEY_NBSP = 'NBSP'
|
||||
KEY_THINSP = 'THINSP'
|
||||
KEY_ENSP = 'ENSP'
|
||||
KEY_EMSP = 'EMSP'
|
||||
KEY_ZWNJ = 'ZWNJ'
|
||||
KEY_ZWJ = 'ZWJ'
|
||||
SPACE_ENTITIES = {
|
||||
'NBSP': ('\u00A0', ' '), # Неразрывный пробел
|
||||
'THINSP': ('\u2009', ' '), # Тонкий пробел
|
||||
'ENSP': ('\u2002', ' '), # Полу-широкий пробел
|
||||
'EMSP': ('\u2003', ' '), # Широкий пробел
|
||||
'ZWNJ': ('\u200C', '‌'), # Разрывный пробел нулевой ширины (без пробела)
|
||||
'ZWJ': ('\u200D', '‍'), # Неразрывный пробел нулевой ширины
|
||||
KEY_NBSP: ('\u00A0', ' '), # Неразрывный пробел
|
||||
KEY_THINSP: ('\u2009', ' '), # Тонкий пробел
|
||||
KEY_ENSP: ('\u2002', ' '), # Полу-широкий пробел
|
||||
KEY_EMSP: ('\u2003', ' '), # Широкий пробел
|
||||
KEY_ZWNJ: ('\u200C', '‌'), # Разрывный пробел нулевой ширины (без пробела)
|
||||
KEY_ZWJ: ('\u200D', '‍'), # Неразрывный пробел нулевой ширины
|
||||
}
|
||||
|
||||
# Тире и дефисы
|
||||
@@ -60,6 +67,7 @@ QUOTE_ENTITIES = {
|
||||
'RSAQUO': ('\u203A', '›'), # Закрывающая французская угловая кавычка -- ‹
|
||||
}
|
||||
|
||||
# Символы валют
|
||||
CURRENCY_ENTITIES = {
|
||||
'DOLLAR': ('\u0024', '$'), # Доллар
|
||||
'CENT': ('\u00A2', '¢'), # Цент
|
||||
@@ -70,14 +78,46 @@ CURRENCY_ENTITIES = {
|
||||
'RUBLE': ('\u20BD', '₽'), # Российский рубль (₽)
|
||||
}
|
||||
|
||||
# Математические символы
|
||||
KEY_LT = 'LT'
|
||||
KEY_GT = 'GT'
|
||||
MATH_ENTITIES = {
|
||||
KEY_LT: ('\u00B7', '<'), # Меньше (<)
|
||||
KEY_GT: ('\u00B7', '>'), # Больше (>)
|
||||
'PLUS': ('\u002B', '+'), # Плюс (+)
|
||||
'MINUS': ('\u2212', '−'), # Минус (−)
|
||||
'MULTIPLY': ('\u00D7', '×'), # Умножение (×)
|
||||
'DIVIDE': ('\u00F7', '÷'), # Деление (÷)
|
||||
'EQUALS': ('\u003D', '='), # Равно (=)
|
||||
'NOT_EQUAL': ('\u2260', '≠'), # Не равно (≠)
|
||||
'PLUSMN': ('\u00B1', '±'), # Плюс-минус (±)
|
||||
'LESS_EQUAL': ('\u2264', '≤'), # Меньше или равно (≤)
|
||||
'GREATER_EQUAL': ('\u2265', '≥'), # Больше или равно (≥)
|
||||
'APPROX_EQUAL': ('\u2245', '≅'), # Приблизительно равно (≅)
|
||||
'APPROX_EQ': ('\u2245', '≊'), # Приблизительно равно (≅)
|
||||
'APPROX': ('\u2248', '≈'), # Приблизительно равно (≈)
|
||||
}
|
||||
|
||||
# Другие символы (пример для расширения)
|
||||
KEY_AMP = 'AMP'
|
||||
SYMBOL_ENTITIES = {
|
||||
KEY_AMP: ('\u0026', '&smp;'), #Амперсанд (&)
|
||||
'HELLIP': ('\u2026', '…'), # Многоточие
|
||||
'COPY': ('\u00A9', '©'), # Копирайт
|
||||
# ... стрелочки, математические символы и т.д. по мере необходимости
|
||||
}
|
||||
|
||||
# Сущности, которые ВСЕГДА должны выводиться как мнемоники в режиме MODE_MIXED
|
||||
# Указываются их ИМЕНА (ключи из словарей выше)
|
||||
ALWAYS_MNEMONIC_IN_SAFE_MODE = frozenset(['SHY', 'NBSP', 'ZWSP'])
|
||||
# --- Сборка и валидация ---
|
||||
|
||||
# 1. Создаем единый словарь всех сущностей для удобного доступа
|
||||
ALL_ENTITIES = {
|
||||
**SHY_ENTITIES, **SPACE_ENTITIES, **DASH_ENTITIES, **MATH_ENTITIES,
|
||||
**QUOTE_ENTITIES, **CURRENCY_ENTITIES, **SYMBOL_ENTITIES
|
||||
}
|
||||
|
||||
# Сущности, которые ВСЕГДА должны выводиться как мнемоники в режиме MODE_MIXED
|
||||
# Указываются их ИМЕНА (ключи из словарей выше).
|
||||
# NOTE: Повторное использование магических строк 'SHY', 'NBSP' и т.д. не создает новый объект в памяти. Умный Python
|
||||
# когда видит одинаковую строку в коде применяет интернирование строк (string interning).
|
||||
ALWAYS_MNEMONIC_IN_SAFE_MODE = frozenset([KEY_AMP, KEY_LT, KEY_GT, KEY_SHY, KEY_NBSP, KEY_ZWNJ, KEY_ZWJ])
|
||||
|
||||
|
Reference in New Issue
Block a user