From c0596d30ade91489d438805316c127ec4f443ed6 Mon Sep 17 00:00:00 2001 From: Mikko Ahlroth Date: Tue, 6 Aug 2013 22:21:23 +0300 Subject: [PATCH] Initial commit, still work in progress. --- README.md | 7 + lib/excoder.ex | 2087 ++++++++++++++++++++++++++++++++++++++++++++++++ mix.exs | 21 + 3 files changed, 2115 insertions(+) create mode 100644 README.md create mode 100644 lib/excoder.ex create mode 100644 mix.exs diff --git a/README.md b/README.md new file mode 100644 index 0000000..6e1f280 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +ExCoder is a small Elixir library for encoding and decoding HTML entities. I +decided to write it because I needed to decode HTML entities (without caring +about the mess of parsing HTML) and I did not want to learn Erlang XML +libraries. + +ExCoder supports both decoding named and numbered HTML entities. Encoding will +always use the decimal numbered format. diff --git a/lib/excoder.ex b/lib/excoder.ex new file mode 100644 index 0000000..6f2b67a --- /dev/null +++ b/lib/excoder.ex @@ -0,0 +1,2087 @@ +defmodule ExCoder do + + # Change this in case the definition of UTF-8 changes for some reason :) + @max_codepoint 1114111 + + decode_table = [ + { " ", " " }, + {" ", " +"}, + { "!", "!" }, + { """, "\"" }, + { """, "\"" }, + { "#", "#" }, + { "$", "$" }, + { "%", "%" }, + { "&", "&" }, + { "&", "&" }, + { "'", "'" }, + { "(", "(" }, + { ")", ")" }, + { "*", "*" }, + { "*", "*" }, + { "+", "+" }, + { ",", "," }, + { ".", "." }, + { "/", "/" }, + { ":", ":" }, + { ";", ";" }, + { "<", "<" }, + { "<", "<" }, + { "=", "=" }, + { ">", ">" }, + { ">", ">" }, + { "?", "?" }, + { "@", "@" }, + { "[", "[" }, + { "[", "[" }, + { "\", "\\" }, + { "]", "]" }, + { "]", "]" }, + { "^", "^" }, + { "_", "_" }, + { "`", "`" }, + { "`", "`" }, + { "{", "{" }, + { "{", "{" }, + { "|", "|" }, + { "|", "|" }, + { "|", "|" }, + { "}", "}" }, + { "}", "}" }, + { " ", " " }, + { " ", " " }, + { "¡", "¡" }, + { "¢", "¢" }, + { "£", "£" }, + { "¤", "¤" }, + { "¥", "¥" }, + { "¦", "¦" }, + { "§", "§" }, + { "¨", "¨" }, + { "¨", "¨" }, + { "¨", "¨" }, + { "¨", "¨" }, + { "©", "©" }, + { "©", "©" }, + { "ª", "ª" }, + { "«", "«" }, + { "¬", "¬" }, + { "­", "­" }, + { "®", "®" }, + { "®", "®" }, + { "®", "®" }, + { "¯", "¯" }, + { "‾", "¯" }, + { "¯", "¯" }, + { "°", "°" }, + { "±", "±" }, + { "±", "±" }, + { "±", "±" }, + { "²", "²" }, + { "³", "³" }, + { "´", "´" }, + { "´", "´" }, + { "µ", "µ" }, + { "¶", "¶" }, + { "·", "·" }, + { "·", "·" }, + { "·", "·" }, + { "¸", "¸" }, + { "¸", "¸" }, + { "¹", "¹" }, + { "º", "º" }, + { "»", "»" }, + { "¼", "¼" }, + { "½", "½" }, + { "½", "½" }, + { "¾", "¾" }, + { "¿", "¿" }, + { "À", "À" }, + { "Á", "Á" }, + { "Â", "Â" }, + { "Ã", "Ã" }, + { "Ä", "Ä" }, + { "Å", "Å" }, + { "Æ", "Æ" }, + { "Ç", "Ç" }, + { "È", "È" }, + { "É", "É" }, + { "Ê", "Ê" }, + { "Ë", "Ë" }, + { "Ì", "Ì" }, + { "Í", "Í" }, + { "Î", "Î" }, + { "Ï", "Ï" }, + { "Ð", "Ð" }, + { "Ñ", "Ñ" }, + { "Ò", "Ò" }, + { "Ó", "Ó" }, + { "Ô", "Ô" }, + { "Õ", "Õ" }, + { "Ö", "Ö" }, + { "×", "×" }, + { "Ø", "Ø" }, + { "Ù", "Ù" }, + { "Ú", "Ú" }, + { "Û", "Û" }, + { "Ü", "Ü" }, + { "Ý", "Ý" }, + { "Þ", "Þ" }, + { "ß", "ß" }, + { "à", "à" }, + { "á", "á" }, + { "â", "â" }, + { "ã", "ã" }, + { "ä", "ä" }, + { "å", "å" }, + { "æ", "æ" }, + { "ç", "ç" }, + { "è", "è" }, + { "é", "é" }, + { "ê", "ê" }, + { "ë", "ë" }, + { "ì", "ì" }, + { "í", "í" }, + { "î", "î" }, + { "ï", "ï" }, + { "ð", "ð" }, + { "ñ", "ñ" }, + { "ò", "ò" }, + { "ó", "ó" }, + { "ô", "ô" }, + { "õ", "õ" }, + { "ö", "ö" }, + { "÷", "÷" }, + { "÷", "÷" }, + { "ø", "ø" }, + { "ù", "ù" }, + { "ú", "ú" }, + { "û", "û" }, + { "ü", "ü" }, + { "ý", "ý" }, + { "þ", "þ" }, + { "ÿ", "ÿ" }, + { "Ā", "Ā" }, + { "ā", "ā" }, + { "Ă", "Ă" }, + { "ă", "ă" }, + { "Ą", "Ą" }, + { "ą", "ą" }, + { "Ć", "Ć" }, + { "ć", "ć" }, + { "Ĉ", "Ĉ" }, + { "ĉ", "ĉ" }, + { "Ċ", "Ċ" }, + { "ċ", "ċ" }, + { "Č", "Č" }, + { "č", "č" }, + { "Ď", "Ď" }, + { "ď", "ď" }, + { "Đ", "Đ" }, + { "đ", "đ" }, + { "Ē", "Ē" }, + { "ē", "ē" }, + { "Ė", "Ė" }, + { "ė", "ė" }, + { "Ę", "Ę" }, + { "ę", "ę" }, + { "Ě", "Ě" }, + { "ě", "ě" }, + { "Ĝ", "Ĝ" }, + { "ĝ", "ĝ" }, + { "Ğ", "Ğ" }, + { "ğ", "ğ" }, + { "Ġ", "Ġ" }, + { "ġ", "ġ" }, + { "Ģ", "Ģ" }, + { "Ĥ", "Ĥ" }, + { "ĥ", "ĥ" }, + { "Ħ", "Ħ" }, + { "ħ", "ħ" }, + { "Ĩ", "Ĩ" }, + { "ĩ", "ĩ" }, + { "Ī", "Ī" }, + { "ī", "ī" }, + { "Į", "Į" }, + { "į", "į" }, + { "İ", "İ" }, + { "ı", "ı" }, + { "ı", "ı" }, + { "IJ", "IJ" }, + { "ij", "ij" }, + { "Ĵ", "Ĵ" }, + { "ĵ", "ĵ" }, + { "Ķ", "Ķ" }, + { "ķ", "ķ" }, + { "ĸ", "ĸ" }, + { "Ĺ", "Ĺ" }, + { "ĺ", "ĺ" }, + { "Ļ", "Ļ" }, + { "ļ", "ļ" }, + { "Ľ", "Ľ" }, + { "ľ", "ľ" }, + { "Ŀ", "Ŀ" }, + { "ŀ", "ŀ" }, + { "Ł", "Ł" }, + { "ł", "ł" }, + { "Ń", "Ń" }, + { "ń", "ń" }, + { "Ņ", "Ņ" }, + { "ņ", "ņ" }, + { "Ň", "Ň" }, + { "ň", "ň" }, + { "ʼn", "ʼn" }, + { "Ŋ", "Ŋ" }, + { "ŋ", "ŋ" }, + { "Ō", "Ō" }, + { "ō", "ō" }, + { "Ő", "Ő" }, + { "ő", "ő" }, + { "Œ", "Œ" }, + { "œ", "œ" }, + { "Ŕ", "Ŕ" }, + { "ŕ", "ŕ" }, + { "Ŗ", "Ŗ" }, + { "ŗ", "ŗ" }, + { "Ř", "Ř" }, + { "ř", "ř" }, + { "Ś", "Ś" }, + { "ś", "ś" }, + { "Ŝ", "Ŝ" }, + { "ŝ", "ŝ" }, + { "Ş", "Ş" }, + { "ş", "ş" }, + { "Š", "Š" }, + { "š", "š" }, + { "Ţ", "Ţ" }, + { "ţ", "ţ" }, + { "Ť", "Ť" }, + { "ť", "ť" }, + { "Ŧ", "Ŧ" }, + { "ŧ", "ŧ" }, + { "Ũ", "Ũ" }, + { "ũ", "ũ" }, + { "Ū", "Ū" }, + { "ū", "ū" }, + { "Ŭ", "Ŭ" }, + { "ŭ", "ŭ" }, + { "Ů", "Ů" }, + { "ů", "ů" }, + { "Ű", "Ű" }, + { "ű", "ű" }, + { "Ų", "Ų" }, + { "ų", "ų" }, + { "Ŵ", "Ŵ" }, + { "ŵ", "ŵ" }, + { "Ŷ", "Ŷ" }, + { "ŷ", "ŷ" }, + { "Ÿ", "Ÿ" }, + { "Ź", "Ź" }, + { "ź", "ź" }, + { "Ż", "Ż" }, + { "ż", "ż" }, + { "Ž", "Ž" }, + { "ž", "ž" }, + { "ƒ", "ƒ" }, + { "Ƶ", "Ƶ" }, + { "ǵ", "ǵ" }, + { "ȷ", "ȷ" }, + { "ˆ", "ˆ" }, + { "ˇ", "ˇ" }, + { "ˇ", "ˇ" }, + { "˘", "˘" }, + { "˘", "˘" }, + { "˙", "˙" }, + { "˙", "˙" }, + { "˚", "˚" }, + { "˛", "˛" }, + { "˜", "˜" }, + { "˜", "˜" }, + { "˝", "˝" }, + { "˝", "˝" }, + { "̑", "̑" }, + { "_", "̲" }, + { "Α", "Α" }, + { "Β", "Β" }, + { "Γ", "Γ" }, + { "Δ", "Δ" }, + { "Ε", "Ε" }, + { "Ζ", "Ζ" }, + { "Η", "Η" }, + { "Θ", "Θ" }, + { "Ι", "Ι" }, + { "Κ", "Κ" }, + { "Λ", "Λ" }, + { "Μ", "Μ" }, + { "Ν", "Ν" }, + { "Ξ", "Ξ" }, + { "Ο", "Ο" }, + { "Π", "Π" }, + { "Ρ", "Ρ" }, + { "Σ", "Σ" }, + { "Τ", "Τ" }, + { "Υ", "Υ" }, + { "Φ", "Φ" }, + { "Χ", "Χ" }, + { "Ψ", "Ψ" }, + { "Ω", "Ω" }, + { "α", "α" }, + { "β", "β" }, + { "γ", "γ" }, + { "δ", "δ" }, + { "ϵ", "ε" }, + { "ϵ", "ε" }, + { "ε", "ε" }, + { "ζ", "ζ" }, + { "η", "η" }, + { "θ", "θ" }, + { "ι", "ι" }, + { "κ", "κ" }, + { "λ", "λ" }, + { "μ", "μ" }, + { "ν", "ν" }, + { "ξ", "ξ" }, + { "ο", "ο" }, + { "π", "π" }, + { "ρ", "ρ" }, + { "ς", "ς" }, + { "ς", "ς" }, + { "ς", "ς" }, + { "σ", "σ" }, + { "τ", "τ" }, + { "υ", "υ" }, + { "υ", "υ" }, + { "φ", "φ" }, + { "ϕ", "φ" }, + { "ϕ", "φ" }, + { "χ", "χ" }, + { "ψ", "ψ" }, + { "ω", "ω" }, + { "ϑ", "ϑ" }, + { "ϑ", "ϑ" }, + { "ϑ", "ϑ" }, + { "ϒ", "ϒ" }, + { "ϒ", "ϒ" }, + { "ϕ", "ϕ" }, + { "ϖ", "ϖ" }, + { "ϖ", "ϖ" }, + { "Ϝ", "Ϝ" }, + { "ϝ", "ϝ" }, + { "ϝ", "ϝ" }, + { "ϰ", "ϰ" }, + { "ϰ", "ϰ" }, + { "ϱ", "ϱ" }, + { "ϱ", "ϱ" }, + { "ε", "ϵ" }, + { "ϵ", "ϵ" }, + { "϶", "϶" }, + { "϶", "϶" }, + { "Ё", "Ё" }, + { "Ђ", "Ђ" }, + { "Ѓ", "Ѓ" }, + { "Є", "Є" }, + { "Ѕ", "Ѕ" }, + { "І", "І" }, + { "Ї", "Ї" }, + { "Ј", "Ј" }, + { "Љ", "Љ" }, + { "Њ", "Њ" }, + { "Ћ", "Ћ" }, + { "Ќ", "Ќ" }, + { "Ў", "Ў" }, + { "Џ", "Џ" }, + { "А", "А" }, + { "Б", "Б" }, + { "В", "В" }, + { "Г", "Г" }, + { "Д", "Д" }, + { "Е", "Е" }, + { "Ж", "Ж" }, + { "З", "З" }, + { "И", "И" }, + { "Й", "Й" }, + { "К", "К" }, + { "Л", "Л" }, + { "М", "М" }, + { "Н", "Н" }, + { "О", "О" }, + { "П", "П" }, + { "Р", "Р" }, + { "С", "С" }, + { "Т", "Т" }, + { "У", "У" }, + { "Ф", "Ф" }, + { "Х", "Х" }, + { "Ц", "Ц" }, + { "Ч", "Ч" }, + { "Ш", "Ш" }, + { "Щ", "Щ" }, + { "Ъ", "Ъ" }, + { "Ы", "Ы" }, + { "Ь", "Ь" }, + { "Э", "Э" }, + { "Ю", "Ю" }, + { "Я", "Я" }, + { "а", "а" }, + { "б", "б" }, + { "в", "в" }, + { "г", "г" }, + { "д", "д" }, + { "е", "е" }, + { "ж", "ж" }, + { "з", "з" }, + { "и", "и" }, + { "й", "й" }, + { "к", "к" }, + { "л", "л" }, + { "м", "м" }, + { "н", "н" }, + { "о", "о" }, + { "п", "п" }, + { "р", "р" }, + { "с", "с" }, + { "т", "т" }, + { "у", "у" }, + { "ф", "ф" }, + { "х", "х" }, + { "ц", "ц" }, + { "ч", "ч" }, + { "ш", "ш" }, + { "щ", "щ" }, + { "ъ", "ъ" }, + { "ы", "ы" }, + { "ь", "ь" }, + { "э", "э" }, + { "ю", "ю" }, + { "я", "я" }, + { "ё", "ё" }, + { "ђ", "ђ" }, + { "ѓ", "ѓ" }, + { "є", "є" }, + { "ѕ", "ѕ" }, + { "і", "і" }, + { "ї", "ї" }, + { "ј", "ј" }, + { "љ", "љ" }, + { "њ", "њ" }, + { "ћ", "ћ" }, + { "ќ", "ќ" }, + { "ў", "ў" }, + { "џ", "џ" }, + { " ", " " }, + { " ", " " }, + { " ", " " }, + { " ", " " }, + { " ", " " }, + { " ", " " }, + { " ", " " }, + { " ", " " }, + { " ", " " }, + { " ", " " }, + { "​", "​" }, + { "​", "​" }, + { "​", "​" }, + { "​", "​" }, + { "​", "​" }, + { "‌", "‌" }, + { "‍", "‍" }, + { "‎", "‎" }, + { "‏", "‏" }, + { "‐", "‐" }, + { "‐", "‐" }, + { "–", "–" }, + { "—", "—" }, + { "―", "―" }, + { "‖", "‖" }, + { "‖", "‖" }, + { "‘", "‘" }, + { "‘", "‘" }, + { "’", "’" }, + { "’", "’" }, + { "’", "’" }, + { "‚", "‚" }, + { "‚", "‚" }, + { "“", "“" }, + { "“", "“" }, + { "”", "”" }, + { "”", "”" }, + { "”", "”" }, + { "„", "„" }, + { "„", "„" }, + { "†", "†" }, + { "‡", "‡" }, + { "‡", "‡" }, + { "•", "•" }, + { "•", "•" }, + { "‥", "‥" }, + { "…", "…" }, + { "…", "…" }, + { "‰", "‰" }, + { "‱", "‱" }, + { "′", "′" }, + { "″", "″" }, + { "‴", "‴" }, + { "‵", "‵" }, + { "‵", "‵" }, + { "‹", "‹" }, + { "›", "›" }, + { "‾", "‾" }, + { "⁁", "⁁" }, + { "⁃", "⁃" }, + { "⁄", "⁄" }, + { "⁏", "⁏" }, + { "⁗", "⁗" }, + { " ", " " }, + { "⁠", "⁠" }, + { "⁡", "⁡" }, + { "⁡", "⁡" }, + { "⁢", "⁢" }, + { "⁢", "⁢" }, + { "⁣", "⁣" }, + { "⁣", "⁣" }, + { "€", "€" }, + { "⃛", "⃛" }, + { "⃛", "⃛" }, + { "⃜", "⃜" }, + { "ℂ", "ℂ" }, + { "ℂ", "ℂ" }, + { "℅", "℅" }, + { "ℊ", "ℊ" }, + { "ℋ", "ℋ" }, + { "ℋ", "ℋ" }, + { "ℋ", "ℋ" }, + { "ℌ", "ℌ" }, + { "ℌ", "ℌ" }, + { "ℍ", "ℍ" }, + { "ℍ", "ℍ" }, + { "ℎ", "ℎ" }, + { "ℏ", "ℏ" }, + { "ℏ", "ℏ" }, + { "ℏ", "ℏ" }, + { "ℏ", "ℏ" }, + { "ℐ", "ℐ" }, + { "ℐ", "ℐ" }, + { "ℑ", "ℑ" }, + { "ℑ", "ℑ" }, + { "ℑ", "ℑ" }, + { "ℑ", "ℑ" }, + { "ℒ", "ℒ" }, + { "ℒ", "ℒ" }, + { "ℒ", "ℒ" }, + { "ℓ", "ℓ" }, + { "ℕ", "ℕ" }, + { "ℕ", "ℕ" }, + { "№", "№" }, + { "℗", "℗" }, + { "℘", "℘" }, + { "℘", "℘" }, + { "ℙ", "ℙ" }, + { "ℙ", "ℙ" }, + { "ℚ", "ℚ" }, + { "ℚ", "ℚ" }, + { "ℛ", "ℛ" }, + { "ℛ", "ℛ" }, + { "ℜ", "ℜ" }, + { "ℜ", "ℜ" }, + { "ℜ", "ℜ" }, + { "ℜ", "ℜ" }, + { "ℝ", "ℝ" }, + { "ℝ", "ℝ" }, + { "℞", "℞" }, + { "™", "™" }, + { "™", "™" }, + { "ℤ", "ℤ" }, + { "ℤ", "ℤ" }, + { "Ω", "Ω" }, + { "℧", "℧" }, + { "ℨ", "ℨ" }, + { "ℨ", "ℨ" }, + { "℩", "℩" }, + { "Å", "Å" }, + { "ℬ", "ℬ" }, + { "ℬ", "ℬ" }, + { "ℬ", "ℬ" }, + { "ℭ", "ℭ" }, + { "ℭ", "ℭ" }, + { "ℯ", "ℯ" }, + { "ℰ", "ℰ" }, + { "ℰ", "ℰ" }, + { "ℱ", "ℱ" }, + { "ℱ", "ℱ" }, + { "ℳ", "ℳ" }, + { "ℳ", "ℳ" }, + { "ℳ", "ℳ" }, + { "ℴ", "ℴ" }, + { "ℴ", "ℴ" }, + { "ℴ", "ℴ" }, + { "ℵ", "ℵ" }, + { "ℵ", "ℵ" }, + { "ℶ", "ℶ" }, + { "ℷ", "ℷ" }, + { "ℸ", "ℸ" }, + { "ⅅ", "ⅅ" }, + { "ⅅ", "ⅅ" }, + { "ⅆ", "ⅆ" }, + { "ⅆ", "ⅆ" }, + { "ⅇ", "ⅇ" }, + { "ⅇ", "ⅇ" }, + { "ⅇ", "ⅇ" }, + { "ⅈ", "ⅈ" }, + { "ⅈ", "ⅈ" }, + { "⅓", "⅓" }, + { "⅔", "⅔" }, + { "⅕", "⅕" }, + { "⅖", "⅖" }, + { "⅗", "⅗" }, + { "⅘", "⅘" }, + { "⅙", "⅙" }, + { "⅚", "⅚" }, + { "⅛", "⅛" }, + { "⅜", "⅜" }, + { "⅝", "⅝" }, + { "⅞", "⅞" }, + { "←", "←" }, + { "←", "←" }, + { "←", "←" }, + { "←", "←" }, + { "←", "←" }, + { "↑", "↑" }, + { "↑", "↑" }, + { "↑", "↑" }, + { "↑", "↑" }, + { "→", "→" }, + { "→", "→" }, + { "→", "→" }, + { "→", "→" }, + { "→", "→" }, + { "↓", "↓" }, + { "↓", "↓" }, + { "↓", "↓" }, + { "↓", "↓" }, + { "↔", "↔" }, + { "↔", "↔" }, + { "↔", "↔" }, + { "↕", "↕" }, + { "↕", "↕" }, + { "↕", "↕" }, + { "↖", "↖" }, + { "↖", "↖" }, + { "↖", "↖" }, + { "↗", "↗" }, + { "↗", "↗" }, + { "↗", "↗" }, + { "↘", "↘" }, + { "↘", "↘" }, + { "↘", "↘" }, + { "↙", "↙" }, + { "↙", "↙" }, + { "↙", "↙" }, + { "↚", "↚" }, + { "↚", "↚" }, + { "↛", "↛" }, + { "↛", "↛" }, + { "↝", "↝" }, + { "↝", "↝" }, + { "↞", "↞" }, + { "↞", "↞" }, + { "↟", "↟" }, + { "↠", "↠" }, + { "↠", "↠" }, + { "↡", "↡" }, + { "↢", "↢" }, + { "↢", "↢" }, + { "↣", "↣" }, + { "↣", "↣" }, + { "↤", "↤" }, + { "↤", "↤" }, + { "↥", "↥" }, + { "↥", "↥" }, + { "↦", "↦" }, + { "↦", "↦" }, + { "↦", "↦" }, + { "↧", "↧" }, + { "↧", "↧" }, + { "↩", "↩" }, + { "↩", "↩" }, + { "↪", "↪" }, + { "↪", "↪" }, + { "↫", "↫" }, + { "↫", "↫" }, + { "↬", "↬" }, + { "↬", "↬" }, + { "↭", "↭" }, + { "↭", "↭" }, + { "↮", "↮" }, + { "↮", "↮" }, + { "↰", "↰" }, + { "↰", "↰" }, + { "↱", "↱" }, + { "↱", "↱" }, + { "↲", "↲" }, + { "↳", "↳" }, + { "↵", "↵" }, + { "↶", "↶" }, + { "↶", "↶" }, + { "↷", "↷" }, + { "↷", "↷" }, + { "↺", "↺" }, + { "↺", "↺" }, + { "↻", "↻" }, + { "↻", "↻" }, + { "↼", "↼" }, + { "↼", "↼" }, + { "↼", "↼" }, + { "↽", "↽" }, + { "↽", "↽" }, + { "↽", "↽" }, + { "↾", "↾" }, + { "↾", "↾" }, + { "↾", "↾" }, + { "↿", "↿" }, + { "↿", "↿" }, + { "↿", "↿" }, + { "⇀", "⇀" }, + { "⇀", "⇀" }, + { "⇀", "⇀" }, + { "⇁", "⇁" }, + { "⇁", "⇁" }, + { "⇁", "⇁" }, + { "⇂", "⇂" }, + { "⇂", "⇂" }, + { "⇂", "⇂" }, + { "⇃", "⇃" }, + { "⇃", "⇃" }, + { "⇃", "⇃" }, + { "⇄", "⇄" }, + { "⇄", "⇄" }, + { "⇄", "⇄" }, + { "⇅", "⇅" }, + { "⇅", "⇅" }, + { "⇆", "⇆" }, + { "⇆", "⇆" }, + { "⇆", "⇆" }, + { "⇇", "⇇" }, + { "⇇", "⇇" }, + { "⇈", "⇈" }, + { "⇈", "⇈" }, + { "⇉", "⇉" }, + { "⇉", "⇉" }, + { "⇊", "⇊" }, + { "⇊", "⇊" }, + { "⇋", "⇋" }, + { "⇋", "⇋" }, + { "⇋", "⇋" }, + { "⇌", "⇌" }, + { "⇌", "⇌" }, + { "⇌", "⇌" }, + { "⇍", "⇍" }, + { "⇍", "⇍" }, + { "⇎", "⇎" }, + { "⇎", "⇎" }, + { "⇏", "⇏" }, + { "⇏", "⇏" }, + { "⇐", "⇐" }, + { "⇐", "⇐" }, + { "⇐", "⇐" }, + { "⇑", "⇑" }, + { "⇑", "⇑" }, + { "⇑", "⇑" }, + { "⇒", "⇒" }, + { "⇒", "⇒" }, + { "⇒", "⇒" }, + { "⇒", "⇒" }, + { "⇓", "⇓" }, + { "⇓", "⇓" }, + { "⇓", "⇓" }, + { "⇔", "⇔" }, + { "⇔", "⇔" }, + { "⇔", "⇔" }, + { "⇔", "⇔" }, + { "⇕", "⇕" }, + { "⇕", "⇕" }, + { "⇕", "⇕" }, + { "⇖", "⇖" }, + { "⇗", "⇗" }, + { "⇘", "⇘" }, + { "⇙", "⇙" }, + { "⇚", "⇚" }, + { "⇚", "⇚" }, + { "⇛", "⇛" }, + { "⇛", "⇛" }, + { "⇝", "⇝" }, + { "⇤", "⇤" }, + { "⇤", "⇤" }, + { "⇥", "⇥" }, + { "⇥", "⇥" }, + { "⇵", "⇵" }, + { "⇵", "⇵" }, + { "⇽", "⇽" }, + { "⇾", "⇾" }, + { "⇿", "⇿" }, + { "∀", "∀" }, + { "∀", "∀" }, + { "∁", "∁" }, + { "∁", "∁" }, + { "∂", "∂" }, + { "∂", "∂" }, + { "∃", "∃" }, + { "∃", "∃" }, + { "∄", "∄" }, + { "∄", "∄" }, + { "∄", "∄" }, + { "∅", "∅" }, + { "∅", "∅" }, + { "∅", "∅" }, + { "∅", "∅" }, + { "∇", "∇" }, + { "∇", "∇" }, + { "∈", "∈" }, + { "∈", "∈" }, + { "∈", "∈" }, + { "∈", "∈" }, + { "∉", "∉" }, + { "∉", "∉" }, + { "∉", "∉" }, + { "∋", "∋" }, + { "∋", "∋" }, + { "∋", "∋" }, + { "∋", "∋" }, + { "∌", "∌" }, + { "∌", "∌" }, + { "∌", "∌" }, + { "∏", "∏" }, + { "∏", "∏" }, + { "∐", "∐" }, + { "∐", "∐" }, + { "∑", "∑" }, + { "∑", "∑" }, + { "−", "−" }, + { "∓", "∓" }, + { "∓", "∓" }, + { "∓", "∓" }, + { "∔", "∔" }, + { "∔", "∔" }, + { "∖", "∖" }, + { "∖", "∖" }, + { "∖", "∖" }, + { "∖", "∖" }, + { "∖", "∖" }, + { "∗", "∗" }, + { "∘", "∘" }, + { "∘", "∘" }, + { "√", "√" }, + { "√", "√" }, + { "∝", "∝" }, + { "∝", "∝" }, + { "∝", "∝" }, + { "∝", "∝" }, + { "∝", "∝" }, + { "∞", "∞" }, + { "∟", "∟" }, + { "∠", "∠" }, + { "∠", "∠" }, + { "∡", "∡" }, + { "∡", "∡" }, + { "∢", "∢" }, + { "∣", "∣" }, + { "∣", "∣" }, + { "∣", "∣" }, + { "∣", "∣" }, + { "∤", "∤" }, + { "∤", "∤" }, + { "∤", "∤" }, + { "∤", "∤" }, + { "∥", "∥" }, + { "∥", "∥" }, + { "∥", "∥" }, + { "∥", "∥" }, + { "∥", "∥" }, + { "∦", "∦" }, + { "∦", "∦" }, + { "∦", "∦" }, + { "∦", "∦" }, + { "∦", "∦" }, + { "∧", "∧" }, + { "∧", "∧" }, + { "∨", "∨" }, + { "∨", "∨" }, + { "∩", "∩" }, + { "∪", "∪" }, + { "∫", "∫" }, + { "∫", "∫" }, + { "∬", "∬" }, + { "∭", "∭" }, + { "∭", "∭" }, + { "∮", "∮" }, + { "∮", "∮" }, + { "∮", "∮" }, + { "∯", "∯" }, + { "∯", "∯" }, + { "∰", "∰" }, + { "∱", "∱" }, + { "∲", "∲" }, + { "∲", "∲" }, + { "∳", "∳" }, + { "∳", "∳" }, + { "∴", "∴" }, + { "∴", "∴" }, + { "∴", "∴" }, + { "∵", "∵" }, + { "∵", "∵" }, + { "∵", "∵" }, + { "∶", "∶" }, + { "∷", "∷" }, + { "∷", "∷" }, + { "∸", "∸" }, + { "∸", "∸" }, + { "∺", "∺" }, + { "∻", "∻" }, + { "∼", "∼" }, + { "∼", "∼" }, + { "∼", "∼" }, + { "∼", "∼" }, + { "∽", "∽" }, + { "∽", "∽" }, + { "∾", "∾" }, + { "∾", "∾" }, + { "∿", "∿" }, + { "≀", "≀" }, + { "≀", "≀" }, + { "≀", "≀" }, + { "≁", "≁" }, + { "≁", "≁" }, + { "≂", "≂" }, + { "≂", "≂" }, + { "≂", "≂" }, + { "≃", "≃" }, + { "≃", "≃" }, + { "≃", "≃" }, + { "≄", "≄" }, + { "≄", "≄" }, + { "≄", "≄" }, + { "≅", "≅" }, + { "≅", "≅" }, + { "≆", "≆" }, + { "≇", "≇" }, + { "≇", "≇" }, + { "≈", "≈" }, + { "≈", "≈" }, + { "≈", "≈" }, + { "≈", "≈" }, + { "≈", "≈" }, + { "≈", "≈" }, + { "≉", "≉" }, + { "≉", "≉" }, + { "≉", "≉" }, + { "≊", "≊" }, + { "≊", "≊" }, + { "≋", "≋" }, + { "≌", "≌" }, + { "≌", "≌" }, + { "≍", "≍" }, + { "≍", "≍" }, + { "≎", "≎" }, + { "≎", "≎" }, + { "≎", "≎" }, + { "≏", "≏" }, + { "≏", "≏" }, + { "≏", "≏" }, + { "≐", "≐" }, + { "≐", "≐" }, + { "≐", "≐" }, + { "≑", "≑" }, + { "≑", "≑" }, + { "≒", "≒" }, + { "≒", "≒" }, + { "≓", "≓" }, + { "≓", "≓" }, + { "≔", "≔" }, + { "≔", "≔" }, + { "≔", "≔" }, + { "≕", "≕" }, + { "≕", "≕" }, + { "≖", "≖" }, + { "≖", "≖" }, + { "≗", "≗" }, + { "≗", "≗" }, + { "≙", "≙" }, + { "≚", "≚" }, + { "≜", "≜" }, + { "≜", "≜" }, + { "≟", "≟" }, + { "≟", "≟" }, + { "≠", "≠" }, + { "≠", "≠" }, + { "≡", "≡" }, + { "≡", "≡" }, + { "≢", "≢" }, + { "≢", "≢" }, + { "≤", "≤" }, + { "≤", "≤" }, + { "≥", "≥" }, + { "≥", "≥" }, + { "≥", "≥" }, + { "≦", "≦" }, + { "≦", "≦" }, + { "≦", "≦" }, + { "≧", "≧" }, + { "≧", "≧" }, + { "≧", "≧" }, + { "≨", "≨" }, + { "≨", "≨" }, + { "≩", "≩" }, + { "≩", "≩" }, + { "≪", "≪" }, + { "≪", "≪" }, + { "≪", "≪" }, + { "≫", "≫" }, + { "≫", "≫" }, + { "≫", "≫" }, + { "≬", "≬" }, + { "≬", "≬" }, + { "≭", "≭" }, + { "≮", "≮" }, + { "≮", "≮" }, + { "≮", "≮" }, + { "≯", "≯" }, + { "≯", "≯" }, + { "≯", "≯" }, + { "≰", "≰" }, + { "≰", "≰" }, + { "≰", "≰" }, + { "≱", "≱" }, + { "≱", "≱" }, + { "≱", "≱" }, + { "≲", "≲" }, + { "≲", "≲" }, + { "≲", "≲" }, + { "≳", "≳" }, + { "≳", "≳" }, + { "≳", "≳" }, + { "≴", "≴" }, + { "≴", "≴" }, + { "≵", "≵" }, + { "≵", "≵" }, + { "≶", "≶" }, + { "≶", "≶" }, + { "≶", "≶" }, + { "≷", "≷" }, + { "≷", "≷" }, + { "≷", "≷" }, + { "≸", "≸" }, + { "≸", "≸" }, + { "≹", "≹" }, + { "≹", "≹" }, + { "≺", "≺" }, + { "≺", "≺" }, + { "≺", "≺" }, + { "≻", "≻" }, + { "≻", "≻" }, + { "≻", "≻" }, + { "≼", "≼" }, + { "≼", "≼" }, + { "≼", "≼" }, + { "≽", "≽" }, + { "≽", "≽" }, + { "≽", "≽" }, + { "≾", "≾" }, + { "≾", "≾" }, + { "≾", "≾" }, + { "≿", "≿" }, + { "≿", "≿" }, + { "≿", "≿" }, + { "⊀", "⊀" }, + { "⊀", "⊀" }, + { "⊀", "⊀" }, + { "⊁", "⊁" }, + { "⊁", "⊁" }, + { "⊁", "⊁" }, + { "⊂", "⊂" }, + { "⊂", "⊂" }, + { "⊃", "⊃" }, + { "⊃", "⊃" }, + { "⊃", "⊃" }, + { "⊄", "⊄" }, + { "⊅", "⊅" }, + { "⊆", "⊆" }, + { "⊆", "⊆" }, + { "⊆", "⊆" }, + { "⊇", "⊇" }, + { "⊇", "⊇" }, + { "⊇", "⊇" }, + { "⊈", "⊈" }, + { "⊈", "⊈" }, + { "⊈", "⊈" }, + { "⊉", "⊉" }, + { "⊉", "⊉" }, + { "⊉", "⊉" }, + { "⊊", "⊊" }, + { "⊊", "⊊" }, + { "⊋", "⊋" }, + { "⊋", "⊋" }, + { "⊍", "⊍" }, + { "⊎", "⊎" }, + { "⊎", "⊎" }, + { "⊏", "⊏" }, + { "⊏", "⊏" }, + { "⊏", "⊏" }, + { "⊐", "⊐" }, + { "⊐", "⊐" }, + { "⊐", "⊐" }, + { "⊑", "⊑" }, + { "⊑", "⊑" }, + { "⊑", "⊑" }, + { "⊒", "⊒" }, + { "⊒", "⊒" }, + { "⊒", "⊒" }, + { "⊓", "⊓" }, + { "⊓", "⊓" }, + { "⊔", "⊔" }, + { "⊔", "⊔" }, + { "⊕", "⊕" }, + { "⊕", "⊕" }, + { "⊖", "⊖" }, + { "⊖", "⊖" }, + { "⊗", "⊗" }, + { "⊗", "⊗" }, + { "⊘", "⊘" }, + { "⊙", "⊙" }, + { "⊙", "⊙" }, + { "⊚", "⊚" }, + { "⊚", "⊚" }, + { "⊛", "⊛" }, + { "⊛", "⊛" }, + { "⊝", "⊝" }, + { "⊝", "⊝" }, + { "⊞", "⊞" }, + { "⊞", "⊞" }, + { "⊟", "⊟" }, + { "⊟", "⊟" }, + { "⊠", "⊠" }, + { "⊠", "⊠" }, + { "⊡", "⊡" }, + { "⊡", "⊡" }, + { "⊢", "⊢" }, + { "⊢", "⊢" }, + { "⊣", "⊣" }, + { "⊣", "⊣" }, + { "⊤", "⊤" }, + { "⊤", "⊤" }, + { "⊥", "⊥" }, + { "⊥", "⊥" }, + { "⊥", "⊥" }, + { "⊥", "⊥" }, + { "⊧", "⊧" }, + { "⊨", "⊨" }, + { "⊨", "⊨" }, + { "⊩", "⊩" }, + { "⊪", "⊪" }, + { "⊫", "⊫" }, + { "⊬", "⊬" }, + { "⊭", "⊭" }, + { "⊮", "⊮" }, + { "⊯", "⊯" }, + { "⊰", "⊰" }, + { "⊲", "⊲" }, + { "⊲", "⊲" }, + { "⊲", "⊲" }, + { "⊳", "⊳" }, + { "⊳", "⊳" }, + { "⊳", "⊳" }, + { "⊴", "⊴" }, + { "⊴", "⊴" }, + { "⊴", "⊴" }, + { "⊵", "⊵" }, + { "⊵", "⊵" }, + { "⊵", "⊵" }, + { "⊶", "⊶" }, + { "⊷", "⊷" }, + { "⊸", "⊸" }, + { "⊸", "⊸" }, + { "⊹", "⊹" }, + { "⊺", "⊺" }, + { "⊺", "⊺" }, + { "⊻", "⊻" }, + { "⊽", "⊽" }, + { "⊾", "⊾" }, + { "⊿", "⊿" }, + { "⋀", "⋀" }, + { "⋀", "⋀" }, + { "⋀", "⋀" }, + { "⋁", "⋁" }, + { "⋁", "⋁" }, + { "⋁", "⋁" }, + { "⋂", "⋂" }, + { "⋂", "⋂" }, + { "⋂", "⋂" }, + { "⋃", "⋃" }, + { "⋃", "⋃" }, + { "⋃", "⋃" }, + { "⋄", "⋄" }, + { "⋄", "⋄" }, + { "⋄", "⋄" }, + { "⋅", "⋅" }, + { "⋆", "⋆" }, + { "⋆", "⋆" }, + { "⋇", "⋇" }, + { "⋇", "⋇" }, + { "⋈", "⋈" }, + { "⋉", "⋉" }, + { "⋊", "⋊" }, + { "⋋", "⋋" }, + { "⋋", "⋋" }, + { "⋌", "⋌" }, + { "⋌", "⋌" }, + { "⋍", "⋍" }, + { "⋍", "⋍" }, + { "⋎", "⋎" }, + { "⋎", "⋎" }, + { "⋏", "⋏" }, + { "⋏", "⋏" }, + { "⋐", "⋐" }, + { "⋐", "⋐" }, + { "⋑", "⋑" }, + { "⋑", "⋑" }, + { "⋒", "⋒" }, + { "⋓", "⋓" }, + { "⋔", "⋔" }, + { "⋔", "⋔" }, + { "⋕", "⋕" }, + { "⋖", "⋖" }, + { "⋖", "⋖" }, + { "⋗", "⋗" }, + { "⋗", "⋗" }, + { "⋘", "⋘" }, + { "⋙", "⋙" }, + { "⋙", "⋙" }, + { "⋚", "⋚" }, + { "⋚", "⋚" }, + { "⋚", "⋚" }, + { "⋛", "⋛" }, + { "⋛", "⋛" }, + { "⋛", "⋛" }, + { "⋞", "⋞" }, + { "⋞", "⋞" }, + { "⋟", "⋟" }, + { "⋟", "⋟" }, + { "⋠", "⋠" }, + { "⋠", "⋠" }, + { "⋡", "⋡" }, + { "⋡", "⋡" }, + { "⋢", "⋢" }, + { "⋢", "⋢" }, + { "⋣", "⋣" }, + { "⋣", "⋣" }, + { "⋦", "⋦" }, + { "⋧", "⋧" }, + { "⋨", "⋨" }, + { "⋨", "⋨" }, + { "⋩", "⋩" }, + { "⋩", "⋩" }, + { "⋪", "⋪" }, + { "⋪", "⋪" }, + { "⋪", "⋪" }, + { "⋫", "⋫" }, + { "⋫", "⋫" }, + { "⋫", "⋫" }, + { "⋬", "⋬" }, + { "⋬", "⋬" }, + { "⋬", "⋬" }, + { "⋭", "⋭" }, + { "⋭", "⋭" }, + { "⋭", "⋭" }, + { "⋮", "⋮" }, + { "⋯", "⋯" }, + { "⋰", "⋰" }, + { "⋱", "⋱" }, + { "⋲", "⋲" }, + { "⋳", "⋳" }, + { "⋴", "⋴" }, + { "⋵", "⋵" }, + { "⋶", "⋶" }, + { "⋷", "⋷" }, + { "⋹", "⋹" }, + { "⋺", "⋺" }, + { "⋻", "⋻" }, + { "⋼", "⋼" }, + { "⋽", "⋽" }, + { "⋾", "⋾" }, + { "⌅", "⌅" }, + { "⌅", "⌅" }, + { "⌆", "⌆" }, + { "⌆", "⌆" }, + { "⌈", "⌈" }, + { "⌈", "⌈" }, + { "⌉", "⌉" }, + { "⌉", "⌉" }, + { "⌊", "⌊" }, + { "⌊", "⌊" }, + { "⌋", "⌋" }, + { "⌋", "⌋" }, + { "⌌", "⌌" }, + { "⌍", "⌍" }, + { "⌎", "⌎" }, + { "⌏", "⌏" }, + { "⌐", "⌐" }, + { "⌒", "⌒" }, + { "⌓", "⌓" }, + { "⌕", "⌕" }, + { "⌖", "⌖" }, + { "⌜", "⌜" }, + { "⌜", "⌜" }, + { "⌝", "⌝" }, + { "⌝", "⌝" }, + { "⌞", "⌞" }, + { "⌞", "⌞" }, + { "⌟", "⌟" }, + { "⌟", "⌟" }, + { "⌢", "⌢" }, + { "⌢", "⌢" }, + { "⌣", "⌣" }, + { "⌣", "⌣" }, + { "⌭", "⌭" }, + { "⌮", "⌮" }, + { "⌶", "⌶" }, + { "⌽", "⌽" }, + { "⌿", "⌿" }, + { "⍼", "⍼" }, + { "⎰", "⎰" }, + { "⎰", "⎰" }, + { "⎱", "⎱" }, + { "⎱", "⎱" }, + { "⎴", "⎴" }, + { "⎴", "⎴" }, + { "⎵", "⎵" }, + { "⎵", "⎵" }, + { "⎶", "⎶" }, + { "⏜", "⏜" }, + { "⏝", "⏝" }, + { "⏞", "⏞" }, + { "⏟", "⏟" }, + { "⏢", "⏢" }, + { "⏧", "⏧" }, + { "␣", "␣" }, + { "Ⓢ", "Ⓢ" }, + { "Ⓢ", "Ⓢ" }, + { "─", "─" }, + { "─", "─" }, + { "│", "│" }, + { "┌", "┌" }, + { "┐", "┐" }, + { "└", "└" }, + { "┘", "┘" }, + { "├", "├" }, + { "┤", "┤" }, + { "┬", "┬" }, + { "┴", "┴" }, + { "┼", "┼" }, + { "═", "═" }, + { "║", "║" }, + { "╒", "╒" }, + { "╓", "╓" }, + { "╔", "╔" }, + { "╕", "╕" }, + { "╖", "╖" }, + { "╗", "╗" }, + { "╘", "╘" }, + { "╙", "╙" }, + { "╚", "╚" }, + { "╛", "╛" }, + { "╜", "╜" }, + { "╝", "╝" }, + { "╞", "╞" }, + { "╟", "╟" }, + { "╠", "╠" }, + { "╡", "╡" }, + { "╢", "╢" }, + { "╣", "╣" }, + { "╤", "╤" }, + { "╥", "╥" }, + { "╦", "╦" }, + { "╧", "╧" }, + { "╨", "╨" }, + { "╩", "╩" }, + { "╪", "╪" }, + { "╫", "╫" }, + { "╬", "╬" }, + { "▀", "▀" }, + { "▄", "▄" }, + { "█", "█" }, + { "░", "░" }, + { "▒", "▒" }, + { "▓", "▓" }, + { "□", "□" }, + { "□", "□" }, + { "□", "□" }, + { "▪", "▪" }, + { "▪", "▪" }, + { "▪", "▪" }, + { "▪", "▪" }, + { "▫", "▫" }, + { "▭", "▭" }, + { "▮", "▮" }, + { "▱", "▱" }, + { "△", "△" }, + { "△", "△" }, + { "▴", "▴" }, + { "▴", "▴" }, + { "▵", "▵" }, + { "▵", "▵" }, + { "▸", "▸" }, + { "▸", "▸" }, + { "▹", "▹" }, + { "▹", "▹" }, + { "▽", "▽" }, + { "▽", "▽" }, + { "▾", "▾" }, + { "▾", "▾" }, + { "▿", "▿" }, + { "▿", "▿" }, + { "◂", "◂" }, + { "◂", "◂" }, + { "◃", "◃" }, + { "◃", "◃" }, + { "◊", "◊" }, + { "◊", "◊" }, + { "○", "○" }, + { "◬", "◬" }, + { "◯", "◯" }, + { "◯", "◯" }, + { "◸", "◸" }, + { "◹", "◹" }, + { "◺", "◺" }, + { "◻", "◻" }, + { "◼", "◼" }, + { "★", "★" }, + { "★", "★" }, + { "☆", "☆" }, + { "☎", "☎" }, + { "♀", "♀" }, + { "♂", "♂" }, + { "♠", "♠" }, + { "♠", "♠" }, + { "♣", "♣" }, + { "♣", "♣" }, + { "♥", "♥" }, + { "♥", "♥" }, + { "♦", "♦" }, + { "♦", "♦" }, + { "♪", "♪" }, + { "♭", "♭" }, + { "♮", "♮" }, + { "♮", "♮" }, + { "♯", "♯" }, + { "✓", "✓" }, + { "✓", "✓" }, + { "✗", "✗" }, + { "✠", "✠" }, + { "✠", "✠" }, + { "✶", "✶" }, + { "❘", "❘" }, + { "❲", "❲" }, + { "❳", "❳" }, + { "⟦", "⟦" }, + { "⟦", "⟦" }, + { "⟧", "⟧" }, + { "⟧", "⟧" }, + { "⟨", "⟨" }, + { "⟨", "⟨" }, + { "⟨", "⟨" }, + { "⟩", "⟩" }, + { "⟩", "⟩" }, + { "⟩", "⟩" }, + { "⟪", "⟪" }, + { "⟫", "⟫" }, + { "⟬", "⟬" }, + { "⟭", "⟭" }, + { "⟵", "⟵" }, + { "⟵", "⟵" }, + { "⟵", "⟵" }, + { "⟶", "⟶" }, + { "⟶", "⟶" }, + { "⟶", "⟶" }, + { "⟷", "⟷" }, + { "⟷", "⟷" }, + { "⟷", "⟷" }, + { "⟸", "⟸" }, + { "⟸", "⟸" }, + { "⟸", "⟸" }, + { "⟹", "⟹" }, + { "⟹", "⟹" }, + { "⟹", "⟹" }, + { "⟺", "⟺" }, + { "⟺", "⟺" }, + { "⟺", "⟺" }, + { "⟼", "⟼" }, + { "⟼", "⟼" }, + { "⟿", "⟿" }, + { "⤂", "⤂" }, + { "⤃", "⤃" }, + { "⤄", "⤄" }, + { "⤅", "⤅" }, + { "⤌", "⤌" }, + { "⤍", "⤍" }, + { "⤍", "⤍" }, + { "⤎", "⤎" }, + { "⤏", "⤏" }, + { "⤏", "⤏" }, + { "⤐", "⤐" }, + { "⤐", "⤐" }, + { "⤑", "⤑" }, + { "⤒", "⤒" }, + { "⤓", "⤓" }, + { "⤖", "⤖" }, + { "⤙", "⤙" }, + { "⤚", "⤚" }, + { "⤛", "⤛" }, + { "⤜", "⤜" }, + { "⤝", "⤝" }, + { "⤞", "⤞" }, + { "⤟", "⤟" }, + { "⤠", "⤠" }, + { "⤣", "⤣" }, + { "⤤", "⤤" }, + { "⤥", "⤥" }, + { "⤥", "⤥" }, + { "⤦", "⤦" }, + { "⤦", "⤦" }, + { "⤧", "⤧" }, + { "⤨", "⤨" }, + { "⤨", "⤨" }, + { "⤩", "⤩" }, + { "⤩", "⤩" }, + { "⤪", "⤪" }, + { "⤳", "⤳" }, + { "⤵", "⤵" }, + { "⤶", "⤶" }, + { "⤷", "⤷" }, + { "⤸", "⤸" }, + { "⤹", "⤹" }, + { "⤼", "⤼" }, + { "⤽", "⤽" }, + { "⥅", "⥅" }, + { "⥈", "⥈" }, + { "⥉", "⥉" }, + { "⥊", "⥊" }, + { "⥋", "⥋" }, + { "⥎", "⥎" }, + { "⥏", "⥏" }, + { "⥐", "⥐" }, + { "⥑", "⥑" }, + { "⥒", "⥒" }, + { "⥓", "⥓" }, + { "⥔", "⥔" }, + { "⥕", "⥕" }, + { "⥖", "⥖" }, + { "⥗", "⥗" }, + { "⥘", "⥘" }, + { "⥙", "⥙" }, + { "⥚", "⥚" }, + { "⥛", "⥛" }, + { "⥜", "⥜" }, + { "⥝", "⥝" }, + { "⥞", "⥞" }, + { "⥟", "⥟" }, + { "⥠", "⥠" }, + { "⥡", "⥡" }, + { "⥢", "⥢" }, + { "⥣", "⥣" }, + { "⥤", "⥤" }, + { "⥥", "⥥" }, + { "⥦", "⥦" }, + { "⥧", "⥧" }, + { "⥨", "⥨" }, + { "⥩", "⥩" }, + { "⥪", "⥪" }, + { "⥫", "⥫" }, + { "⥬", "⥬" }, + { "⥭", "⥭" }, + { "⥮", "⥮" }, + { "⥮", "⥮" }, + { "⥯", "⥯" }, + { "⥯", "⥯" }, + { "⥰", "⥰" }, + { "⥱", "⥱" }, + { "⥲", "⥲" }, + { "⥳", "⥳" }, + { "⥴", "⥴" }, + { "⥵", "⥵" }, + { "⥶", "⥶" }, + { "⥸", "⥸" }, + { "⥹", "⥹" }, + { "⥻", "⥻" }, + { "⥼", "⥼" }, + { "⥽", "⥽" }, + { "⥾", "⥾" }, + { "⥿", "⥿" }, + { "⦅", "⦅" }, + { "⦆", "⦆" }, + { "⦋", "⦋" }, + { "⦌", "⦌" }, + { "⦍", "⦍" }, + { "⦎", "⦎" }, + { "⦏", "⦏" }, + { "⦐", "⦐" }, + { "⦑", "⦑" }, + { "⦒", "⦒" }, + { "⦓", "⦓" }, + { "⦔", "⦔" }, + { "⦕", "⦕" }, + { "⦖", "⦖" }, + { "⦚", "⦚" }, + { "⦜", "⦜" }, + { "⦝", "⦝" }, + { "⦤", "⦤" }, + { "⦥", "⦥" }, + { "⦦", "⦦" }, + { "⦧", "⦧" }, + { "⦨", "⦨" }, + { "⦩", "⦩" }, + { "⦪", "⦪" }, + { "⦫", "⦫" }, + { "⦬", "⦬" }, + { "⦭", "⦭" }, + { "⦮", "⦮" }, + { "⦯", "⦯" }, + { "⦰", "⦰" }, + { "⦱", "⦱" }, + { "⦲", "⦲" }, + { "⦳", "⦳" }, + { "⦴", "⦴" }, + { "⦵", "⦵" }, + { "⦶", "⦶" }, + { "⦷", "⦷" }, + { "⦹", "⦹" }, + { "⦻", "⦻" }, + { "⦼", "⦼" }, + { "⦾", "⦾" }, + { "⦿", "⦿" }, + { "⧀", "⧀" }, + { "⧁", "⧁" }, + { "⧂", "⧂" }, + { "⧃", "⧃" }, + { "⧄", "⧄" }, + { "⧅", "⧅" }, + { "⧉", "⧉" }, + { "⧍", "⧍" }, + { "⧎", "⧎" }, + { "⧏", "⧏" }, + { "⧐", "⧐" }, + { "∽̱", "⧚" }, + { "⧜", "⧜" }, + { "⧝", "⧝" }, + { "⧞", "⧞" }, + { "⧣", "⧣" }, + { "⧤", "⧤" }, + { "⧥", "⧥" }, + { "⧫", "⧫" }, + { "⧫", "⧫" }, + { "⧴", "⧴" }, + { "⧶", "⧶" }, + { "⨀", "⨀" }, + { "⨀", "⨀" }, + { "⨁", "⨁" }, + { "⨁", "⨁" }, + { "⨂", "⨂" }, + { "⨂", "⨂" }, + { "⨄", "⨄" }, + { "⨄", "⨄" }, + { "⨆", "⨆" }, + { "⨆", "⨆" }, + { "⨌", "⨌" }, + { "⨌", "⨌" }, + { "⨍", "⨍" }, + { "⨐", "⨐" }, + { "⨑", "⨑" }, + { "⨒", "⨒" }, + { "⨓", "⨓" }, + { "⨔", "⨔" }, + { "⨕", "⨕" }, + { "⨖", "⨖" }, + { "⨗", "⨗" }, + { "⨢", "⨢" }, + { "⨣", "⨣" }, + { "⨤", "⨤" }, + { "⨥", "⨥" }, + { "⨦", "⨦" }, + { "⨧", "⨧" }, + { "⨩", "⨩" }, + { "⨪", "⨪" }, + { "⨭", "⨭" }, + { "⨮", "⨮" }, + { "⨯", "⨯" }, + { "⨰", "⨰" }, + { "⨱", "⨱" }, + { "⨳", "⨳" }, + { "⨴", "⨴" }, + { "⨵", "⨵" }, + { "⨶", "⨶" }, + { "⨷", "⨷" }, + { "⨸", "⨸" }, + { "⨹", "⨹" }, + { "⨺", "⨺" }, + { "⨻", "⨻" }, + { "⨼", "⨼" }, + { "⨼", "⨼" }, + { "⨿", "⨿" }, + { "⩀", "⩀" }, + { "⩂", "⩂" }, + { "⩃", "⩃" }, + { "⩄", "⩄" }, + { "⩅", "⩅" }, + { "⩆", "⩆" }, + { "⩇", "⩇" }, + { "⩈", "⩈" }, + { "⩉", "⩉" }, + { "⩊", "⩊" }, + { "⩋", "⩋" }, + { "⩌", "⩌" }, + { "⩍", "⩍" }, + { "⩐", "⩐" }, + { "⩓", "⩓" }, + { "⩔", "⩔" }, + { "⩕", "⩕" }, + { "⩖", "⩖" }, + { "⩗", "⩗" }, + { "⩘", "⩘" }, + { "⩚", "⩚" }, + { "⩛", "⩛" }, + { "⩜", "⩜" }, + { "⩝", "⩝" }, + { "⩟", "⩟" }, + { "⩦", "⩦" }, + { "⩪", "⩪" }, + { "⩭", "⩭" }, + { "⩮", "⩮" }, + { "⩯", "⩯" }, + { "⩰", "⩰" }, + { "⩱", "⩱" }, + { "⩲", "⩲" }, + { "⩳", "⩳" }, + { "⩴", "⩴" }, + { "⩵", "⩵" }, + { "⩷", "⩷" }, + { "⩷", "⩷" }, + { "⩸", "⩸" }, + { "⩹", "⩹" }, + { "⩺", "⩺" }, + { "⩻", "⩻" }, + { "⩼", "⩼" }, + { "⩽", "⩽" }, + { "⩽", "⩽" }, + { "⩽", "⩽" }, + { "⩾", "⩾" }, + { "⩾", "⩾" }, + { "⩾", "⩾" }, + { "⩿", "⩿" }, + { "⪀", "⪀" }, + { "⪁", "⪁" }, + { "⪂", "⪂" }, + { "⪃", "⪃" }, + { "⪄", "⪄" }, + { "⪅", "⪅" }, + { "⪅", "⪅" }, + { "⪆", "⪆" }, + { "⪆", "⪆" }, + { "⪇", "⪇" }, + { "⪇", "⪇" }, + { "⪈", "⪈" }, + { "⪈", "⪈" }, + { "⪉", "⪉" }, + { "⪉", "⪉" }, + { "⪊", "⪊" }, + { "⪊", "⪊" }, + { "⪋", "⪋" }, + { "⪋", "⪋" }, + { "⪌", "⪌" }, + { "⪌", "⪌" }, + { "⪍", "⪍" }, + { "⪎", "⪎" }, + { "⪏", "⪏" }, + { "⪐", "⪐" }, + { "⪑", "⪑" }, + { "⪒", "⪒" }, + { "⪓", "⪓" }, + { "⪔", "⪔" }, + { "⪕", "⪕" }, + { "⪕", "⪕" }, + { "⪖", "⪖" }, + { "⪖", "⪖" }, + { "⪗", "⪗" }, + { "⪘", "⪘" }, + { "⪙", "⪙" }, + { "⪚", "⪚" }, + { "⪝", "⪝" }, + { "⪞", "⪞" }, + { "⪟", "⪟" }, + { "⪠", "⪠" }, + { "⪡", "⪡" }, + { "⪢", "⪢" }, + { "⪤", "⪤" }, + { "⪥", "⪥" }, + { "⪦", "⪦" }, + { "⪧", "⪧" }, + { "⪨", "⪨" }, + { "⪩", "⪩" }, + { "⪪", "⪪" }, + { "⪫", "⪫" }, + { "⪬", "⪬" }, + { "⪭", "⪭" }, + { "⪮", "⪮" }, + { "⪯", "⪯" }, + { "⪯", "⪯" }, + { "⪯", "⪯" }, + { "⪰", "⪰" }, + { "⪰", "⪰" }, + { "⪰", "⪰" }, + { "⪳", "⪳" }, + { "⪴", "⪴" }, + { "⪵", "⪵" }, + { "⪵", "⪵" }, + { "⪶", "⪶" }, + { "⪶", "⪶" }, + { "⪷", "⪷" }, + { "⪷", "⪷" }, + { "⪸", "⪸" }, + { "⪸", "⪸" }, + { "⪹", "⪹" }, + { "⪹", "⪹" }, + { "⪺", "⪺" }, + { "⪺", "⪺" }, + { "⪻", "⪻" }, + { "⪼", "⪼" }, + { "⪽", "⪽" }, + { "⪾", "⪾" }, + { "⪿", "⪿" }, + { "⫀", "⫀" }, + { "⫁", "⫁" }, + { "⫂", "⫂" }, + { "⫃", "⫃" }, + { "⫄", "⫄" }, + { "⫅", "⫅" }, + { "⫅", "⫅" }, + { "⫆", "⫆" }, + { "⫆", "⫆" }, + { "⫇", "⫇" }, + { "⫈", "⫈" }, + { "⫋", "⫋" }, + { "⫋", "⫋" }, + { "⫌", "⫌" }, + { "⫌", "⫌" }, + { "⫏", "⫏" }, + { "⫐", "⫐" }, + { "⫑", "⫑" }, + { "⫒", "⫒" }, + { "⫓", "⫓" }, + { "⫔", "⫔" }, + { "⫕", "⫕" }, + { "⫖", "⫖" }, + { "⫗", "⫗" }, + { "⫘", "⫘" }, + { "⫙", "⫙" }, + { "⫚", "⫚" }, + { "⫛", "⫛" }, + { "⫤", "⫤" }, + { "⫤", "⫤" }, + { "⫦", "⫦" }, + { "⫧", "⫧" }, + { "⫨", "⫨" }, + { "⫩", "⫩" }, + { "⫫", "⫫" }, + { "⫬", "⫬" }, + { "⫭", "⫭" }, + { "⫮", "⫮" }, + { "⫯", "⫯" }, + { "⫰", "⫰" }, + { "⫱", "⫱" }, + { "⫲", "⫲" }, + { "⫳", "⫳" }, + { "⫽", "⫽" }, + { "ff", "ff" }, + { "fi", "fi" }, + { "fl", "fl" }, + { "ffi", "ffi" }, + { "ffl", "ffl" }, + { "𝒜", "𝒜" }, + { "𝒞", "𝒞" }, + { "𝒟", "𝒟" }, + { "𝒢", "𝒢" }, + { "𝒥", "𝒥" }, + { "𝒦", "𝒦" }, + { "𝒩", "𝒩" }, + { "𝒪", "𝒪" }, + { "𝒫", "𝒫" }, + { "𝒬", "𝒬" }, + { "𝒮", "𝒮" }, + { "𝒯", "𝒯" }, + { "𝒰", "𝒰" }, + { "𝒱", "𝒱" }, + { "𝒲", "𝒲" }, + { "𝒳", "𝒳" }, + { "𝒴", "𝒴" }, + { "𝒵", "𝒵" }, + { "𝒶", "𝒶" }, + { "𝒷", "𝒷" }, + { "𝒸", "𝒸" }, + { "𝒹", "𝒹" }, + { "𝒻", "𝒻" }, + { "𝒽", "𝒽" }, + { "𝒾", "𝒾" }, + { "𝒿", "𝒿" }, + { "𝓀", "𝓀" }, + { "𝓁", "𝓁" }, + { "𝓂", "𝓂" }, + { "𝓃", "𝓃" }, + { "𝓅", "𝓅" }, + { "𝓆", "𝓆" }, + { "𝓇", "𝓇" }, + { "𝓈", "𝓈" }, + { "𝓉", "𝓉" }, + { "𝓊", "𝓊" }, + { "𝓋", "𝓋" }, + { "𝓌", "𝓌" }, + { "𝓍", "𝓍" }, + { "𝓎", "𝓎" }, + { "𝓏", "𝓏" }, + { "𝔄", "𝔄" }, + { "𝔅", "𝔅" }, + { "𝔇", "𝔇" }, + { "𝔈", "𝔈" }, + { "𝔉", "𝔉" }, + { "𝔊", "𝔊" }, + { "𝔍", "𝔍" }, + { "𝔎", "𝔎" }, + { "𝔏", "𝔏" }, + { "𝔐", "𝔐" }, + { "𝔑", "𝔑" }, + { "𝔒", "𝔒" }, + { "𝔓", "𝔓" }, + { "𝔔", "𝔔" }, + { "𝔖", "𝔖" }, + { "𝔗", "𝔗" }, + { "𝔘", "𝔘" }, + { "𝔙", "𝔙" }, + { "𝔚", "𝔚" }, + { "𝔛", "𝔛" }, + { "𝔜", "𝔜" }, + { "𝔞", "𝔞" }, + { "𝔟", "𝔟" }, + { "𝔠", "𝔠" }, + { "𝔡", "𝔡" }, + { "𝔢", "𝔢" }, + { "𝔣", "𝔣" }, + { "𝔤", "𝔤" }, + { "𝔥", "𝔥" }, + { "𝔦", "𝔦" }, + { "𝔧", "𝔧" }, + { "𝔨", "𝔨" }, + { "𝔩", "𝔩" }, + { "𝔪", "𝔪" }, + { "𝔫", "𝔫" }, + { "𝔬", "𝔬" }, + { "𝔭", "𝔭" }, + { "𝔮", "𝔮" }, + { "𝔯", "𝔯" }, + { "𝔰", "𝔰" }, + { "𝔱", "𝔱" }, + { "𝔲", "𝔲" }, + { "𝔳", "𝔳" }, + { "𝔴", "𝔴" }, + { "𝔵", "𝔵" }, + { "𝔶", "𝔶" }, + { "𝔷", "𝔷" }, + { "𝔸", "𝔸" }, + { "𝔹", "𝔹" }, + { "𝔻", "𝔻" }, + { "𝔼", "𝔼" }, + { "𝔽", "𝔽" }, + { "𝔾", "𝔾" }, + { "𝕀", "𝕀" }, + { "𝕁", "𝕁" }, + { "𝕂", "𝕂" }, + { "𝕃", "𝕃" }, + { "𝕄", "𝕄" }, + { "𝕆", "𝕆" }, + { "𝕊", "𝕊" }, + { "𝕋", "𝕋" }, + { "𝕌", "𝕌" }, + { "𝕍", "𝕍" }, + { "𝕎", "𝕎" }, + { "𝕏", "𝕏" }, + { "𝕐", "𝕐" }, + { "𝕒", "𝕒" }, + { "𝕓", "𝕓" }, + { "𝕔", "𝕔" }, + { "𝕕", "𝕕" }, + { "𝕖", "𝕖" }, + { "𝕗", "𝕗" }, + { "𝕘", "𝕘" }, + { "𝕙", "𝕙" }, + { "𝕚", "𝕚" }, + { "𝕛", "𝕛" }, + { "𝕜", "𝕜" }, + { "𝕝", "𝕝" }, + { "𝕞", "𝕞" }, + { "𝕟", "𝕟" }, + { "𝕠", "𝕠" }, + { "𝕡", "𝕡" }, + { "𝕢", "𝕢" }, + { "𝕣", "𝕣" }, + { "𝕤", "𝕤" }, + { "𝕥", "𝕥" }, + { "𝕦", "𝕦" }, + { "𝕧", "𝕧" }, + { "𝕨", "𝕨" }, + { "𝕩", "𝕩" }, + { "𝕪", "𝕪" }, + { "𝕫", "𝕫" } + ] + + lc { entity, value } inlist decode_table do + def decode(<< unquote(entity), rest :: binary >>), do: unquote(value) <> decode rest + end + + def decode(""), do: "" + + def decode(<< "&#", rest :: binary >>) do + r = %R/^(?:\d+|x[\da-f]+);/i + if Regex.match? r, rest do + decode rest, :numericmode + else + "&#" <> decode rest + end + end + + def decode(<< first :: utf8, rest :: binary >>), do: << first >> <> decode rest + + + def decode(numeric, :numericmode) when is_number numeric do + if numeric <= @max_codepoint do + << numeric :: utf8 >> + else + "" + end + end + + def decode(<< "x", rest :: binary >>, :numericmode) do + [numeric | rest] = strip_numeric rest + decode(binary_to_integer(numeric, 16), :numericmode) <> decode(Enum.join rest, ";") + end + + def decode(str, :numericmode) do + [numeric | rest] = strip_numeric str + decode(binary_to_integer(numeric), :numericmode) <> decode(Enum.join rest, ";") + end + + + + def encode(str) do + str + end + + defp strip_numeric(str) do + String.split(str, ";") + end + +end diff --git a/mix.exs b/mix.exs new file mode 100644 index 0000000..6e9cb14 --- /dev/null +++ b/mix.exs @@ -0,0 +1,21 @@ +defmodule Excoder.Mixfile do + use Mix.Project + + def project do + [ app: :excoder, + version: "0.0.1", + elixir: "~> 0.10.1-dev", + deps: deps ] + end + + # Configuration for the OTP application + def application do + [] + end + + # Returns the list of dependencies in the format: + # { :foobar, "0.1", git: "https://github.com/elixir-lang/foobar.git" } + defp deps do + [] + end +end