add: config.py как единый источник правды (на базе html.entities)
This commit is contained in:
@@ -14,97 +14,39 @@ STRINGS_FOR_DECODE = [
|
||||
("­", "\u00AD"), # Мягкий перенос
|
||||
("    ‍‌", "\u00A0\u2002\u2003\u2009\u200D\u200C"), # Набор пробелов и невидимых символов
|
||||
("– — ‐ ―", "– — ‐ ―"), # Набор тире и дефисов
|
||||
("' « »", "' « »"), # Апостроф и ёлочки
|
||||
("“ ” „", "“ ” „"), # Двойные кавычки
|
||||
("‘ ’ ‚", "‘ ’ ‚"), # Одиночные кавычки
|
||||
("‹ ›", "‹ ›"), # Французские угловые кавычки
|
||||
("$ ¢ £ ¤ ¥ € ₽", "$ ¢ £ ¤ ¥ € ₽"), # Валютные символы
|
||||
("+ − × ÷ = ≠", "+ − × ÷ = ≠"), # Математические символы
|
||||
("± ¬ ° ¹ ² ³", "± ¬ ° ¹ ² ³"),
|
||||
("ƒ % ‰ ‱", "ƒ % ‰ ‱"),
|
||||
("∀ ∁ ∂ ∃ ∄", "∀ ∁ ∂ ∃ ∄"),
|
||||
("∅ ∇ ∈ ∉ ∋ ∌", "∅ ∇ ∈ ∉ ∋ ∌"),
|
||||
("∏ ∐ ∑ ∓ ∸", "∏ ∐ ∑ ∓ ∸"),
|
||||
("∔ ∖ ∗ ∘ √", "∔ ∖ ∗ ∘ √"),
|
||||
("∝ ∞ ∠ ∟ ∡ ∣", "∝ ∞ ∠ ∟ ∡ ∣"),
|
||||
("∢ ∤ ∥ ∦ ∧ ∨", "∢ ∤ ∥ ∦ ∧ ∨"),
|
||||
("∩ ∪ ∫ ∬ ∭ ∮", "∩ ∪ ∫ ∬ ∭ ∮"),
|
||||
("∯ ∰ ∱ ∲", "∯ ∰ ∱ ∲"),
|
||||
("∳ ∴ ∵ ∶ ∷", "∳ ∴ ∵ ∶ ∷"),
|
||||
("∺ ∻ ∼ ∽ ∾ ∿", "∺ ∻ ∼ ∽ ∾ ∿"),
|
||||
("≀ ≁ ≂ ≃ ≄ ≅", "≀ ≁ ≂ ≃ ≄ ≅"),
|
||||
("≈ ≆ ≇ ≉ ≊ ≋", "≈ ≆ ≇ ≉ ≊ ≋"),
|
||||
("≌ ≍ ≎ ≏ ≐ ≑", "≌ ≍ ≎ ≏ ≐ ≑"),
|
||||
("≒ ≓ ≔ ≕ ≖ ≗", "≒ ≓ ≔ ≕ ≖ ≗"),
|
||||
("≙ ≚ ≜ ≟ ≡", "≙ ≚ ≜ ≟ ≡"),
|
||||
("≢ ≤ ≥ ≦ ≧ ≨ ≩", "≢ ≤ ≥ ≦ ≧ ≨ ≩"),
|
||||
("≪ ≫ ≬ ≭ ≮ ≯", "≪ ≫ ≬ ≭ ≮ ≯"),
|
||||
("≰ ≱ ≲ ≳ ≴ ≵", "≰ ≱ ≲ ≳ ≴ ≵"),
|
||||
("≶ ≷ ≸ ≹ ≺ ≻", "≶ ≷ ≸ ≹ ≺ ≻"),
|
||||
("≼ ≽ ≾ ≿ ⊀ ⊁", "≼ ≽ ≾ ≿ ⊀ ⊁"),
|
||||
("⊂ ⊃ ⊄ ⊅ ⊆ ⊇", "⊂ ⊃ ⊄ ⊅ ⊆ ⊇"),
|
||||
("⊈ ⊉ ⊊ ⊋ ⊍", "⊈ ⊉ ⊊ ⊋ ⊍"),
|
||||
("⊎ ⊏ ⊐ ⊑ ⊒", "⊎ ⊏ ⊐ ⊑ ⊒"),
|
||||
("⊓ ⊔ ⊕ ⊖ ⊗", "⊓ ⊔ ⊕ ⊖ ⊗"),
|
||||
("⊘ ⊙ ⊚ ⊛ ⊝ ⊞", "⊘ ⊙ ⊚ ⊛ ⊝ ⊞"),
|
||||
("⊟ ⊠ ⊡ ⊢ ⊣ ⊤", "⊟ ⊠ ⊡ ⊢ ⊣ ⊤"),
|
||||
("⊥ ⊧ ⊨ ⊩ ⊪", "⊥ ⊧ ⊨ ⊩ ⊪"),
|
||||
("⊫ ⊬ ⊭ ⊮ ⊯", "⊫ ⊬ ⊭ ⊮ ⊯"),
|
||||
("⊰ ⊲ ⊳ ⊴ ⊵", "⊰ ⊲ ⊳ ⊴ ⊵"),
|
||||
("⊶ ⊷ ⊸ ⊹ ⊺", "⊶ ⊷ ⊸ ⊹ ⊺"),
|
||||
("⊻ ⊽ ⊾ ⊿ ⋀", "⊻ ⊽ ⊾ ⊿ ⋀"),
|
||||
("⋁ ⋂ ⋃ ⋄ ⋅ ⋆", "⋁ ⋂ ⋃ ⋄ ⋅ ⋆"),
|
||||
("⋇ ⋈ ⋉ ⋊ ⋋", "⋇ ⋈ ⋉ ⋊ ⋋"),
|
||||
("⋌ ⋍ ⋎ ⋏ ⋐ ⋑", "⋌ ⋍ ⋎ ⋏ ⋐ ⋑"),
|
||||
("⋒ ⋓ ⋔ ⋕ ⋖ ⋗", "⋒ ⋓ ⋔ ⋕ ⋖ ⋗"),
|
||||
("⋘ ⋙ ⋚ ⋛ ⋞ ⋟", "⋘ ⋙ ⋚ ⋛ ⋞ ⋟"),
|
||||
("⋠ ⋡ ⋢ ⋣", "⋠ ⋡ ⋢ ⋣"),
|
||||
("⪉ ⪊ ⋦ ⋧ ⋨", "⪉ ⪊ ⋦ ⋧ ⋨"),
|
||||
("⋩ ⋪ ⋫ ⋬ ⋭", "⋩ ⋪ ⋫ ⋬ ⋭"),
|
||||
("⋮ ⋯ ⋰ ⋱ ⋲", "⋮ ⋯ ⋰ ⋱ ⋲"),
|
||||
("⋳ ⋴ ⋵ ⋶ ⋷", "⋳ ⋴ ⋵ ⋶ ⋷"),
|
||||
("⋹ ⋺ ⋻ ⋼ ⋽", "⋹ ⋺ ⋻ ⋼ ⋽"),
|
||||
("⋾ ⌅ ⌆ ⌈ ⌈", "⋾ ⌅ ⌆ ⌈ ⌈"),
|
||||
("⌉ ⌊ ⌋ ⟨ ⟩", "⌉ ⌊ ⌋ ⟨ ⟩"),
|
||||
# ("© ® ™ ℗ @", "© ® ™ ℗ @"), # Другие символы
|
||||
# ("ℂ ℅ ℊ ℋ ℌ ℍ", "ℂ ℅ ℊ ℋ ℌ ℍ"),
|
||||
# ("ℎ ℏ ℐ ℑ ℒ ℓ", "ℎ ℏ ℐ ℑ ℒ ℓ"),
|
||||
# ("ℕ № ℘ ℙ ℚ ℛ", "ℕ № ℘ ℙ ℚ ℛ"),
|
||||
# ("ℝ ℞ ℤ ℧ ℨ ℩", "ℝ ℞ ℤ ℧ ℨ ℩"),
|
||||
# ("ℬ ℭ ℯ ℰ ℱ ℳ", "ℬ ℭ ℯ ℰ ℱ ℳ"),
|
||||
# ("ℴ ℵ ℶ ℷ ℸ", "ℴ ℵ ℶ ℷ ℸ"),
|
||||
# ("ⅅ ⅆ ⅇ ⅈ ffi ff", "ⅅ ⅆ ⅇ ⅈ ffi ff"),
|
||||
# ("fi fl ★ ☆ ☎", "fi fl ★ ☆ ☎"),
|
||||
# ("♀ ♂ ♠ ♣ ♥ ♦", "♀ ♂ ♠ ♣ ♥ ♦"),
|
||||
# ("◊ ♪ ♭ ♮ ♯ ✓", "◊ ♪ ♭ ♮ ♯ ✓"),
|
||||
# ("✗ ✠ ✶ ❘", "✗ ✠ ✶ ❘"),
|
||||
# ("❲ ❳", "❲ ❳"),
|
||||
# ("! # % ( ) *", "! # % ( ) *"), # Знаки препинания
|
||||
# (", . / : ;", ", . / : ;"),
|
||||
# ("? [ \ ] ^ _", "? [ \\ ] ^ _"),
|
||||
# ("` { | } ˜", "` { | } ˜"),
|
||||
# ("ˆ ‎ ‏ ¡ ¦ §", "ˆ \u200e \u200f ¡ ¦ §"),
|
||||
# ("¨ ª ¬ ¯ ´ µ ‵", "¨ ª ¬ ¯ ´ µ ‵"),
|
||||
# ("¶ · ¸ º ¿ ‖", "¶ · ¸ º ¿ ‖"),
|
||||
# ("† ‡ • ‥ …", "† ‡ • ‥ …"),
|
||||
# ("‰ ‱ ′ ″ ‴", "‰ ‱ ′ ″ ‴"),
|
||||
# ("‾ ⁁ ⁃ ⁄ ⁏ ⁗", "‾ ⁁ ⁃ ⁄ ⁏ ⁗"),
|
||||
# ("½ ⅓ ¼ ⅕ ⅙", "½ ⅓ ¼ ⅕ ⅙"), # Дробные символы и знаки
|
||||
# ("⅛ ⅔ ⅖ ¾ ⅗", "⅛ ⅔ ⅖ ¾ ⅗"),
|
||||
# ("⅜ ⅘ ⅚ ⅝ ⅞", "⅜ ⅘ ⅚ ⅝ ⅞"),
|
||||
# ("Α Β Γ Δ Ε Ζ", "Α Β Γ Δ Ε Ζ"), # Греческие символы
|
||||
# ("Η Θ Ι Κ Λ Μ", "Η Θ Ι Κ Λ Μ"),
|
||||
# ("Ν Ξ Ο Π Ρ Σ Τ", "Ν Ξ Ο Π Ρ Σ Τ"),
|
||||
# ("Υ Φ Χ Ψ Ω α", "Υ Φ Χ Ψ Ω α"),
|
||||
# ("β γ δ ε ζ η", "β γ δ ε ζ η"),
|
||||
# ("θ ι κ λ μ ν", "θ ι κ λ μ ν"),
|
||||
# ("ξ ο π ρ σ τ", "ξ ο π ρ σ τ"),
|
||||
# ("υ φ χ ψ ω", "υ φ χ ψ ω"),
|
||||
# ("ϑ ϒ ϖ", "ϑ ϒ ϖ"),
|
||||
# Набор из html.entities.name2codepoint
|
||||
("Æ Á Â À Α Å Ã Ä Ä", "Æ Á Â À Α Å Ã Ä Ä"),
|
||||
("Β Ç Χ ‡ Δ Ð É Ê È", "Β Ç Χ ‡ Δ Ð É Ê È"),
|
||||
("Ε Η Ë Γ Í Î Ì Ι Ï", "Ε Η Ë Γ Í Î Ì Ι Ï"),
|
||||
("Κ Λ Μ Ñ Ν Œ Ó Ô Ò Ö", "Κ Λ Μ Ñ Ν Œ Ó Ô Ò Ö"),
|
||||
("Ω Ο Ø Õ Φ Π ″ Ψ Ρ Š", "Ω Ο Ø Õ Φ Π ″ Ψ Ρ Š"),
|
||||
("Σ Þ Τ Θ Ú Û Ù Υ Ü", "Σ Þ Τ Θ Ú Û Ù Υ Ü"),
|
||||
("Ξ Ý Ÿ Ζ á â ´ æ à", "Ξ Ý Ÿ Ζ á â ´ æ à"),
|
||||
("ℵ α & ∧ ∠ ' å ≈ ã ä", "ℵ α & ∧ ∠ ' å ≈ ã ä"),
|
||||
("„ β ¦ • ∩ ç ¸ ¢ χ ˆ", "„ β ¦ • ∩ ç ¸ ¢ χ ˆ"),
|
||||
("♣ ≅ © ↵ ∪ ¤ ⇓ † ↓ °", "♣ ≅ © ↵ ∪ ¤ ⇓ † ↓ °"),
|
||||
("δ ♦ ÷ é ê è ∅    ", "δ ♦ ÷ é ê è ∅ \u2003 \u2002"),
|
||||
("ε ≡ η ð ë € ∃ ƒ ∀ ½", "ε ≡ η ð ë € ∃ ƒ ∀ ½"),
|
||||
("¼ ¾ ⁄ γ ≥ > ⇔ ↔ ♥ …", "¼ ¾ ⁄ γ ≥ > ⇔ ↔ ♥ …"),
|
||||
("í î ¡ ì ℑ ∞ ∫ ι ¿ ∈", "í î ¡ ì ℑ ∞ ∫ ι ¿ ∈"),
|
||||
("ï κ ⇐ λ ⟨ « ← ⌈ “ ≤", "ï κ ⇐ λ ⟨ « ← ⌈ “ ≤"),
|
||||
("⌊ ∗ ◊ ‎ ‹ ‘ < ¯ — µ", "⌊ ∗ ◊ \u200e ‹ ‘ < ¯ — µ"),
|
||||
("· − μ ∇ – ≠ ∋ ¬ ∉", "· − μ ∇ \u00A0 – ≠ ∋ ¬ ∉"),
|
||||
("⊄ ñ ν ó ô œ ò ‾ ω", "⊄ ñ ν ó ô œ ò ‾ ω"),
|
||||
("ο ⊕ ∨ ª º ø õ ⊗ ö", "ο ⊕ ∨ ª º ø õ ⊗ ö"),
|
||||
("¶ ∂ ‰ ⊥ φ π ϖ ± £ ′ ∏", "¶ ∂ ‰ ⊥ φ π ϖ ± £ ′ ∏"),
|
||||
("∝ ψ " ⇒ √ ⟩ » → ⌉ ”", "∝ ψ \" ⇒ √ ⟩ » → ⌉ ”"),
|
||||
("ℜ ® ⌋ ρ ‏ › ’ ‚ š", "ℜ ® ⌋ ρ \u200f › ’ ‚ š"),
|
||||
("⋅ § ­ σ ς ∼ ♠ ⊂ ⊆ ∑", "⋅ § \u00AD σ ς ∼ ♠ ⊂ ⊆ ∑"),
|
||||
("⊃ ¹ ² ³ ⊇ ß τ ∴ θ ϑ", "⊃ ¹ ² ³ ⊇ ß τ ∴ θ ϑ"),
|
||||
("  þ ˜ × ™ ⇑ ú ↑ û", "\u2009 þ ˜ × ™ ⇑ ú ↑ û"),
|
||||
("ù ¨ ϒ υ ü ℘ ξ ý ¥ ÿ", "ù ¨ ϒ υ ü ℘ ξ ý ¥ ÿ"),
|
||||
("ζ ‍ ‌ + = %", "ζ \u200D \u200C + = %"),
|
||||
# Набор из html.entities.html5
|
||||
("", ""),
|
||||
("", ""),
|
||||
|
||||
|
||||
("", ""),
|
||||
]
|
||||
|
||||
@pytest.mark.parametrize("input_string, expected_output", STRINGS_FOR_DECODE)
|
||||
@@ -118,8 +60,49 @@ def test_html_mnemo_to_utf(input_string, expected_output):
|
||||
assert actual_output == expected_output
|
||||
|
||||
|
||||
@pytest.mark.parametrize("expected_output, input_string", STRINGS_FOR_DECODE)
|
||||
def test_utf_to_html_mnemo(expected_output, input_string):
|
||||
STRINGS_FOR_ENCODE = [
|
||||
# Тестовые строки для декодирования html-метаккода в uft-8
|
||||
("", ""), # Пустая строка
|
||||
("Hello world!", "Hello world!"), # Строка
|
||||
("Привет типограф!", "Привет типограф!"), # Строка русского текста
|
||||
("< > & \"", "< > & ""), # Самый простой набор HTML-мнемоников
|
||||
("\u00AD", "­"), # Мягкий перенос
|
||||
("\u00A0\u2002\u2003\u2009\u200D\u200C", "    ‍‌"), # Набор пробелов и невидимых символов
|
||||
("– — ‐ ―", "– — ‐ ―"), # Набор тире и дефисов
|
||||
("$ ¢ £ ¤ ¥ € ₽", "$ ¢ £ ¤ ¥ € ₽"), # Валютные символы
|
||||
# Набор из html.entities.name2codepoint
|
||||
("Æ Á Â À Α Å Ã Ä Ä", "Æ Á Â À Α Å Ã Ä Ä"),
|
||||
("Β Ç Χ ‡ Δ Ð É Ê È", "Β Ç Χ ‡ Δ Ð É Ê È"),
|
||||
("Ε Η Ë Γ Í Î Ì Ι Ï", "Ε Η Ë Γ Í Î Ì Ι Ï"),
|
||||
("Κ Λ Μ Ñ Ν Œ Ó Ô Ò Ö", "Κ Λ Μ Ñ Ν Œ Ó Ô Ò Ö"),
|
||||
("Ω Ο Ø Õ Φ Π ″ Ψ Ρ Š", "Ω Ο Ø Õ Φ Π ″ Ψ Ρ Š"),
|
||||
("Σ Þ Τ Θ Ú Û Ù Υ Ü", "Σ Þ Τ Θ Ú Û Ù Υ Ü"),
|
||||
("Ξ Ý Ÿ Ζ á â ´ æ à", "Ξ Ý Ÿ Ζ á â ´ æ à"),
|
||||
("ℵ α & ∧ ∠ ' å ≈ ã ä", "ℵ α & ∧ ∠ ' å ≈ ã ä"),
|
||||
("„ β ¦ • ∩ ç ¸ ¢ χ ˆ", "„ β ¦ • ∩ ç ¸ ¢ χ ˆ"),
|
||||
("♣ ≅ © ↵ ∪ ¤ ⇓ † ↓ °", "♣ ≅ © ↵ ∪ ¤ ⇓ † ↓ °"),
|
||||
("δ ♦ ÷ é ê è ∅ \u2003 \u2002", "δ ♦ ÷ é ê è ∅    "),
|
||||
("ε ≡ η ð ë € ∃ ƒ ∀ ½", "ε ≡ η ð ë € ∃ ƒ ∀ ½"),
|
||||
("¼ ¾ ⁄ γ ≥ > ⇔ ↔ ♥ …", "¼ ¾ ⁄ γ ≥ > ⇔ ↔ ♥ …"),
|
||||
("í î ¡ ì ℑ ∞ ∫ ι ¿ ∈", "í î ¡ ì ℑ ∞ ∫ ι ¿ ∈"),
|
||||
("ï κ ⇐ λ ⟨ « ← ⌈ “ ≤", "ï κ ⇐ λ ⟨ « ← ⌈ “ ≤"),
|
||||
("⌊ ∗ ◊ \u200e ‹ ‘ < ¯ — µ", "⌊ ∗ ◊ ‎ ‹ ‘ < ¯ — µ"),
|
||||
("· − μ ∇ \u00A0 – ≠ ∋ ¬ ∉", "· − μ ∇ – ≠ ∋ ¬ ∉"),
|
||||
("⊄ ñ ν ó ô œ ò ‾ ω", "⊄ ñ ν ó ô œ ò ‾ ω"),
|
||||
("ο ⊕ ∨ ª º ø õ ⊗ ö", "ο ⊕ ∨ ª º ø õ ⊗ ö"),
|
||||
("¶ ∂ ‰ ⊥ φ π ϖ ± £ ′ ∏", "¶ ∂ ‰ ⊥ φ π ϖ ± £ ′ ∏"),
|
||||
("∝ ψ \" ⇒ √ ⟩ » → ⌉ ”", "∝ ψ " ⇒ √ ⟩ » → ⌉ ”"),
|
||||
("ℜ ® ⌋ ρ \u200f › ’ ‚ š", "ℜ ® ⌋ ρ ‏ › ’ ‚ š"),
|
||||
("⋅ § \u00AD σ ς ∼ ♠ ⊂ ⊆ ∑", "⋅ § ­ σ ς ∼ ♠ ⊂ ⊆ ∑"),
|
||||
("⊃ ¹ ² ³ ⊇ ß τ ∴ θ ϑ", "⊃ ¹ ² ³ ⊇ ß τ ∴ θ ϑ"),
|
||||
("\u2009 þ ˜ × ™ ⇑ ú ↑ û", "  þ ˜ × ™ ⇑ ú ↑ û"),
|
||||
("ù ¨ ϒ υ ü ℘ ξ ý ¥ ÿ", "ù ¨ ϒ υ ü ℘ ξ ý ¥ ÿ"),
|
||||
("ζ \u200D \u200C + = %", "ζ ‍ ‌ + = %"),
|
||||
# Набор из html.entities.html5
|
||||
]
|
||||
|
||||
@pytest.mark.parametrize("input_string, expected_output", STRINGS_FOR_ENCODE)
|
||||
def test_utf_to_html_mnemo(input_string, expected_output):
|
||||
"""
|
||||
Проверяет ПОВЕДЕНИЕ: кодирование Unicode-строк в HTML-мнемоники.
|
||||
"""
|
||||
|
Reference in New Issue
Block a user