diff --git a/etpgrf/config.py b/etpgrf/config.py index 9a2c311..e0bb277 100644 --- a/etpgrf/config.py +++ b/etpgrf/config.py @@ -34,6 +34,10 @@ EN_ALPHABET_UPPER = EN_VOWELS_UPPER | EN_CONSONANTS_UPPER 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' # Мягкий перенос (­) + # === КОНСТАНТЫ ДЛЯ КОДИРОВАНИЯ HTML-МНЕМНОИКОВ === # --- ЧЕРНЫЙ СПИСОК: Символы, которые НИКОГДА не нужно кодировать в мнемоники --- NEVER_ENCODE_CHARS = (frozenset(['!', '#', '%', '(', ')', '*', ',', '.', '/', ':', ';', '=', '?', '@', @@ -97,20 +101,19 @@ CUSTOM_ENCODE_MAP = { # '\u007b': '{', # { / { / { # '\u007d': '}', # } / } / } # '\u007c': '|', # | / | / | / | - # '\u0026': '&', # & / & / & - # '\u00A0': ' ', # /   /   - '\u0022': '"', # " / " / " + # '\u0026': '&', # & / & / & + # '\u00A0': ' ', # /   /   + '\u0022': '"', # " / " / " '\u0026': '&', # & / & / & '\u003e': '>', # > / > / > - '\u003c': '<', # < / < / < + '\u003c': '<', # < / < / < '\u00ae': '®', # ® / ® / ® / ® '\u00b7': '·', # · / · / · / · '\u0060': '`', # ` / grave / DiacriticalGrave - '\u00a8': '¨', # ¨ / ¨ / ¨ / ¨ + '\u00a8': '¨', # ¨ / ¨ / ¨ / ¨ / ¨ '\u00b1': '±', # ± / ± / ± '\u00bd': '½', # ½ / ½ / ½ - '\u00af': '¯', # ¯ / ¯ / ¯ - '\u00a8': '¨', # ¨ / ¨ / ¨ + '\u00af': '¯', # ¯ / ¯ / ¯ '\u201a': '‚', # ‚ / ‚ / ‚ '\u223e': '∾', # ∾ / ∾ / ∾ '\u2207': '∇', # ∇ / ∇ / ∇ diff --git a/tests/test_codec.py b/tests/test_codec.py index 8345f08..e8d65a4 100644 --- a/tests/test_codec.py +++ b/tests/test_codec.py @@ -332,15 +332,15 @@ STRINGS_FOR_DECODE = [ ("ζ ℨ 𝔷 Ж ж ⇝ ℤ 𝕫 𝒵 𝓏 ‍", "ζ ℨ 𝔷 Ж ж ⇝ ℤ 𝕫 𝒵 𝓏 \u200d"), ] -@pytest.mark.parametrize("input_string, expected_output", STRINGS_FOR_DECODE) -def test_html_mnemo_to_utf(input_string, expected_output): +@pytest.mark.parametrize("mnemonic_string, unicode_output", STRINGS_FOR_DECODE) +def test_html_mnemo_to_utf(mnemonic_string, unicode_output): """ Проверяет ПОВЕДЕНИЕ: декодирование HTML-мнемоников в Unicode-строки. """ # Act (действие) - тестируем - actual_output = codec.decode_to_unicode(input_string) + actual_output = codec.decode_to_unicode(mnemonic_string) # Assert (проверка) - assert actual_output == expected_output + assert actual_output == unicode_output STRINGS_FOR_ENCODE = [ @@ -641,23 +641,23 @@ STRINGS_FOR_ENCODE = [ ("\u200b Ζ ζ ℨ 𝔷 Ж ж ⇝ ℤ", "​ Ζ ζ ℨ 𝔷 Ж ж ⇝ ℤ"), ] -@pytest.mark.parametrize("input_string, expected_output", STRINGS_FOR_ENCODE) -def test_utf_to_html_mnemo(input_string, expected_output): +@pytest.mark.parametrize("unicode_string, mnemonic_string", STRINGS_FOR_ENCODE) +def test_utf_to_html_mnemo(unicode_string, mnemonic_string): """ Проверяет ПОВЕДЕНИЕ: кодирование Unicode-строк в HTML-мнемоники. """ # Act (действие) - тестируем - actual_output = codec.encode_from_unicode(input_string, mode="mnemonic") + actual_output = codec.encode_from_unicode(unicode_string, mode="mnemonic") # Assert (проверка) - assert actual_output == expected_output + assert actual_output == mnemonic_string -@pytest.mark.parametrize("expected_output, input_string", STRINGS_FOR_ENCODE) -def test_html_mnemo_to_utf_back(expected_output, input_string): +@pytest.mark.parametrize("mnemonic_string, unicode_string", STRINGS_FOR_ENCODE) +def test_html_mnemo_to_utf_back(mnemonic_string, unicode_string): """ Проверяет ОБРАТНОЕ ПОВЕДЕНИЕ: из HTML-мнемоники после encode_from_unicode() в Unicode-строки. """ # Act (действие) - тестируем - actual_output = codec.decode_to_unicode(input_string) + actual_output = codec.decode_to_unicode(unicode_string) # Assert (проверка) - assert actual_output == expected_output \ No newline at end of file + assert actual_output == mnemonic_string \ No newline at end of file