274 lines
6.6 KiB
C++
274 lines
6.6 KiB
C++
#ifndef HTML_SPECIAL_HPP
|
|
|
|
#include <codecvt>
|
|
#include <locale>
|
|
|
|
const char * html_special_table[][2] =
|
|
{
|
|
{"Á", "Á"},
|
|
{"á", "á"},
|
|
{"Â", "Â"},
|
|
{"â", "â"},
|
|
{"´", "´"},
|
|
{"Æ", "Æ"},
|
|
{"æ", "æ"},
|
|
{"À", "À"},
|
|
{"à", "à"},
|
|
{"Α", "Α"},
|
|
{"α", "α"},
|
|
{"&", "&"},
|
|
{"∧", "∧"},
|
|
{"∠", "∠"},
|
|
{"'", "'"},
|
|
{"Å", "Å"},
|
|
{"å", "å"},
|
|
{"≈", "≈"},
|
|
{"Ã", "Ã"},
|
|
{"ã", "ã"},
|
|
{"Ä", "Ä"},
|
|
{"ä", "ä"},
|
|
{"„", "„"},
|
|
{"Β", "Β"},
|
|
{"β", "β"},
|
|
{"¦", "¦"},
|
|
{"•", "•"},
|
|
{"∩", "∩"},
|
|
{"Ç", "Ç"},
|
|
{"ç", "ç"},
|
|
{"¸", "¸"},
|
|
{"¢", "¢"},
|
|
{"Χ", "Χ"},
|
|
{"χ", "χ"},
|
|
{"ˆ", "ˆ"},
|
|
{"♣", "♣"},
|
|
{"≅", "≅"},
|
|
{"©", "©"},
|
|
{"↵", "↵"},
|
|
{"∪", "∪"},
|
|
{"¤", "¤"},
|
|
{"†", "†"},
|
|
{"‡", "‡"},
|
|
{"↓", "↓"},
|
|
{"°", "°"},
|
|
{"Δ", "Δ"},
|
|
{"δ", "δ"},
|
|
{"♦", "♦"},
|
|
{"÷", "÷"},
|
|
{"É", "É"},
|
|
{"é", "é"},
|
|
{"Ê", "Ê"},
|
|
{"ê", "ê"},
|
|
{"È", "È"},
|
|
{"è", "è"},
|
|
{"∅", "∅"},
|
|
{" ", " "},
|
|
{" ", " "},
|
|
{"Ε", "Ε"},
|
|
{"ε", "ε"},
|
|
{"≡", "≡"},
|
|
{"Η", "Η"},
|
|
{"η", "η"},
|
|
{"Ð", "Ð"},
|
|
{"ð", "ð"},
|
|
{"Ë", "Ë"},
|
|
{"ë", "ë"},
|
|
{"€", "€"},
|
|
{"∃", "∃"},
|
|
{"ƒ", "ƒ"},
|
|
{"∀", "∀"},
|
|
{"½", "½"},
|
|
{"¼", "¼"},
|
|
{"¾", "¾"},
|
|
{"Γ", "Γ"},
|
|
{"γ", "γ"},
|
|
{"≥", "≥"},
|
|
{">", ">"},
|
|
{"↔", "↔"},
|
|
{"♥", "♥"},
|
|
{"…", "…"},
|
|
{"Í", "Í"},
|
|
{"í", "í"},
|
|
{"Î", "Î"},
|
|
{"î", "î"},
|
|
{"¡", "¡"},
|
|
{"Ì", "Ì"},
|
|
{"ì", "ì"},
|
|
{"∞", "∞"},
|
|
{"∫", "∫"},
|
|
{"Ι", "Ι"},
|
|
{"ι", "ι"},
|
|
{"¿", "¿"},
|
|
{"∈", "∈"},
|
|
{"Ï", "Ï"},
|
|
{"ï", "ï"},
|
|
{"Κ", "Κ"},
|
|
{"κ", "κ"},
|
|
{"Λ", "Λ"},
|
|
{"λ", "λ"},
|
|
{"«", "«"},
|
|
{"←", "←"},
|
|
{"⌈", "⌈"},
|
|
{"“", "“"},
|
|
{"≤", "≤"},
|
|
{"⌊", "⌊"},
|
|
{"∗", "∗"},
|
|
{"◊", "◊"},
|
|
{"‎", "‎"},
|
|
{"‹", "‹"},
|
|
{"‘", "‘"},
|
|
{"<", "<"},
|
|
{"¯", "¯"},
|
|
{"—", "—"},
|
|
{"µ", "µ"},
|
|
{"·", "·"},
|
|
{"−", "−"},
|
|
{"Μ", "Μ"},
|
|
{"μ", "μ"},
|
|
{"∇", "∇"},
|
|
{" ", " "},
|
|
{"–", "–"},
|
|
{"≠", "≠"},
|
|
{"∋", "∋"},
|
|
{"¬", "¬"},
|
|
{"∉", "∉"},
|
|
{"⊄", "⊄"},
|
|
{"Ñ", "Ñ"},
|
|
{"ñ", "ñ"},
|
|
{"Ν", "Ν"},
|
|
{"ν", "ν"},
|
|
{"Ó", "Ó"},
|
|
{"ó", "ó"},
|
|
{"Ô", "Ô"},
|
|
{"ô", "ô"},
|
|
{"Œ", "Œ"},
|
|
{"œ", "œ"},
|
|
{"Ò", "Ò"},
|
|
{"ò", "ò"},
|
|
{"‾", "‾"},
|
|
{"Ω", "Ω"},
|
|
{"ω", "ω"},
|
|
{"Ο", "Ο"},
|
|
{"ο", "ο"},
|
|
{"⊕", "⊕"},
|
|
{"∨", "∨"},
|
|
{"ª", "ª"},
|
|
{"º", "º"},
|
|
{"Ø", "Ø"},
|
|
{"ø", "ø"},
|
|
{"Õ", "Õ"},
|
|
{"õ", "õ"},
|
|
{"⊗", "⊗"},
|
|
{"Ö", "Ö"},
|
|
{"ö", "ö"},
|
|
{"¶", "¶"},
|
|
{"∂", "∂"},
|
|
{"‰", "‰"},
|
|
{"⊥", "⊥"},
|
|
{"Φ", "Φ"},
|
|
{"φ", "φ"},
|
|
{"Π", "Π"},
|
|
{"π", "π"},
|
|
{"ϖ", "ϖ"},
|
|
{"±", "±"},
|
|
{"£", "£"},
|
|
{"′", "′"},
|
|
{"″", "″"},
|
|
{"∏", "∏"},
|
|
{"∝", "∝"},
|
|
{"Ψ", "Ψ"},
|
|
{"ψ", "ψ"},
|
|
{""", """},
|
|
{"√", "√"},
|
|
{"»", "»"},
|
|
{"→", "→"},
|
|
{"⌉", "⌉"},
|
|
{"”", "”"},
|
|
{"®", "®"},
|
|
{"⌋", "⌋"},
|
|
{"Ρ", "Ρ"},
|
|
{"ρ", "ρ"},
|
|
{"‏", "‏"},
|
|
{"›", "›"},
|
|
{"’", "’"},
|
|
{"‚", "‚"},
|
|
{"Š", "Š"},
|
|
{"š", "š"},
|
|
{"⋅", "⋅"},
|
|
{"§", "§"},
|
|
{"­", "­"},
|
|
{"Σ", "Σ"},
|
|
{"σ", "σ"},
|
|
{"ς", "ς"},
|
|
{"∼", "∼"},
|
|
{"♠", "♠"},
|
|
{"⊂", "⊂"},
|
|
{"⊆", "⊆"},
|
|
{"∑", "∑"},
|
|
{"¹", "¹"},
|
|
{"²", "²"},
|
|
{"³", "³"},
|
|
{"⊃", "⊃"},
|
|
{"⊇", "⊇"},
|
|
{"ß", "ß"},
|
|
{"Τ", "Τ"},
|
|
{"τ", "τ"},
|
|
{"∴", "∴"},
|
|
{"Θ", "Θ"},
|
|
{"θ", "θ"},
|
|
{"ϑ", "ϑ"},
|
|
{" ", " "},
|
|
{"Þ", "Þ"},
|
|
{"þ", "þ"},
|
|
{"˜", "˜"},
|
|
{"×", "×"},
|
|
{"™", "™"},
|
|
{"Ú", "Ú"},
|
|
{"ú", "ú"},
|
|
{"↑", "↑"},
|
|
{"Û", "Û"},
|
|
{"û", "û"},
|
|
{"Ù", "Ù"},
|
|
{"ù", "ù"},
|
|
{"¨", "¨"},
|
|
{"ϒ", "ϒ"},
|
|
{"Υ", "Υ"},
|
|
{"υ", "υ"},
|
|
{"Ü", "Ü"},
|
|
{"ü", "ü"},
|
|
{"Ξ", "Ξ"},
|
|
{"ξ", "ξ"},
|
|
{"Ý", "Ý"},
|
|
{"ý", "ý"},
|
|
{"¥", "¥"},
|
|
{"ÿ", "ÿ"},
|
|
{"Ÿ", "Ÿ"},
|
|
{"Ζ", "Ζ"},
|
|
{"ζ", "ζ"},
|
|
{"‍", "‍"},
|
|
{"‌", "‌"},
|
|
};
|
|
|
|
const size_t html_special_table_size = sizeof(html_special_table) / sizeof(html_special_table[0]);
|
|
|
|
const char * html_special_table_lookup(const char * const name) {
|
|
// this should be a iterating-decreasing jump search
|
|
for (int i = 0; i < html_special_table_size; i++) {
|
|
if (!strcmp(name, html_special_table[i][0])) {
|
|
return html_special_table[i][1];
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
const char * html_special_to_utf8(const char * const special) {
|
|
static std::string r(special);
|
|
trim(r);
|
|
uint32_t i(std::stoi(r));
|
|
std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> conv1;
|
|
r = conv1.to_bytes(i);
|
|
return r.c_str();
|
|
}
|
|
|
|
#define HTML_SPECIAL_HPP
|
|
#endif
|