glowpub 0.5.0

A glowfic to epub converter.
Documentation
/// Some readers have trouble handling named entities, and escaping them might mess things up.
/// Here we just replace all escaped entities with their code equivalent.
pub fn decode_named_entities(mut content: String) -> String {
    for (from, to) in NAMED_ENTITIES {
        content = content.replace(from, to);
    }
    content
}

const NAMED_ENTITIES: [(&str, &str); 251] = [
    // Named entities for ISO 8859-1 characters
    (" ", " "),
    ("¡", "¡"),
    ("¢", "¢"),
    ("£", "£"),
    ("¤", "¤"),
    ("¥", "¥"),
    ("¦", "¦"),
    ("§", "§"),
    ("¨", "¨"),
    ("©", "©"),
    ("ª", "ª"),
    ("«", "«"),
    ("¬", "¬"),
    ("­", "­"),
    ("®", "®"),
    ("¯", "¯"),
    ("°", "°"),
    ("±", "±"),
    ("²", "²"),
    ("³", "³"),
    ("´", "´"),
    ("µ", "µ"),
    ("¶", "¶"),
    ("·", "·"),
    ("¸", "¸"),
    ("¹", "¹"),
    ("º", "º"),
    ("»", "»"),
    ("¼", "¼"),
    ("½", "½"),
    ("¾", "¾"),
    ("¿", "¿"),
    ("À", "À"),
    ("Á", "Á"),
    ("Â", "Â"),
    ("Ã", "Ã"),
    ("Ä", "Ä"),
    ("Å", "Å"),
    ("Æ", "Æ"),
    ("Ç", "Ç"),
    ("È", "È"),
    ("É", "É"),
    ("Ê", "Ê"),
    ("Ë", "Ë"),
    ("Ì", "Ì"),
    ("Í", "Í"),
    ("Î", "Î"),
    ("Ï", "Ï"),
    ("Ð", "Ð"),
    ("Ñ", "Ñ"),
    ("Ò", "Ò"),
    ("Ó", "Ó"),
    ("Ô", "Ô"),
    ("Õ", "Õ"),
    ("Ö", "Ö"),
    ("×", "×"),
    ("Ø", "Ø"),
    ("Ù", "Ù"),
    ("Ú", "Ú"),
    ("Û", "Û"),
    ("Ü", "Ü"),
    ("Ý", "Ý"),
    ("Þ", "Þ"),
    ("ß", "ß"),
    ("à", "à"),
    ("á", "á"),
    ("â", "â"),
    ("ã", "ã"),
    ("ä", "ä"),
    ("å", "å"),
    ("æ", "æ"),
    ("ç", "ç"),
    ("è", "è"),
    ("é", "é"),
    ("ê", "ê"),
    ("ë", "ë"),
    ("ì", "ì"),
    ("í", "í"),
    ("î", "î"),
    ("ï", "ï"),
    ("ð", "ð"),
    ("ñ", "ñ"),
    ("ò", "ò"),
    ("ó", "ó"),
    ("ô", "ô"),
    ("õ", "õ"),
    ("ö", "ö"),
    ("÷", "÷"),
    ("ø", "ø"),
    ("ù", "ù"),
    ("ú", "ú"),
    ("û", "û"),
    ("ü", "ü"),
    ("ý", "ý"),
    ("þ", "þ"),
    ("ÿ", "ÿ"),
    // Named entities for symbols, mathematical symbols, and Greek letters
    ("ƒ", "ƒ"),
    ("Α", "Α"),
    ("Β", "Β"),
    ("Γ", "Γ"),
    ("Δ", "Δ"),
    ("Ε", "Ε"),
    ("Ζ", "Ζ"),
    ("Η", "Η"),
    ("Θ", "Θ"),
    ("Ι", "Ι"),
    ("Κ", "Κ"),
    ("Λ", "Λ"),
    ("Μ", "Μ"),
    ("Ν", "Ν"),
    ("Ξ", "Ξ"),
    ("Ο", "Ο"),
    ("Π", "Π"),
    ("Ρ", "Ρ"),
    ("Σ", "Σ"),
    ("Τ", "Τ"),
    ("Υ", "Υ"),
    ("Φ", "Φ"),
    ("Χ", "Χ"),
    ("Ψ", "Ψ"),
    ("Ω", "Ω"),
    ("α", "α"),
    ("β", "β"),
    ("γ", "γ"),
    ("δ", "δ"),
    ("ε", "ε"),
    ("ζ", "ζ"),
    ("η", "η"),
    ("θ", "θ"),
    ("ι", "ι"),
    ("κ", "κ"),
    ("λ", "λ"),
    ("μ", "μ"),
    ("ν", "ν"),
    ("ξ", "ξ"),
    ("ο", "ο"),
    ("π", "π"),
    ("ρ", "ρ"),
    ("ς", "ς"),
    ("σ", "σ"),
    ("τ", "τ"),
    ("υ", "υ"),
    ("φ", "φ"),
    ("χ", "χ"),
    ("ψ", "ψ"),
    ("ω", "ω"),
    ("ϑ", "ϑ"),
    ("ϒ", "ϒ"),
    ("ϖ", "ϖ"),
    ("•", "•"),
    ("…", "…"),
    ("′", "′"),
    ("″", "″"),
    ("‾", "‾"),
    ("⁄", "⁄"),
    ("℘", "℘"),
    ("ℑ", "ℑ"),
    ("ℜ", "ℜ"),
    ("™", "™"),
    ("ℵ", "ℵ"),
    ("←", "←"),
    ("↑", "↑"),
    ("→", "→"),
    ("↓", "↓"),
    ("↔", "↔"),
    ("↵", "↵"),
    ("⇐", "⇐"),
    ("⇑", "⇑"),
    ("⇒", "⇒"),
    ("⇓", "⇓"),
    ("⇔", "⇔"),
    ("∀", "∀"),
    ("∂", "∂"),
    ("∃", "∃"),
    ("∅", "∅"),
    ("∇", "∇"),
    ("∈", "∈"),
    ("∉", "∉"),
    ("∋", "∋"),
    ("∏", "∏"),
    ("∑", "∑"),
    ("−", "−"),
    ("∗", "∗"),
    ("√", "√"),
    ("∝", "∝"),
    ("∞", "∞"),
    ("∠", "∠"),
    ("∧", "⊥"),
    ("∨", "⊦"),
    ("∩", "∩"),
    ("∪", "∪"),
    ("∫", "∫"),
    ("∴", "∴"),
    ("∼", "∼"),
    ("≅", "≅"),
    ("≈", "≈"),
    ("≠", "≠"),
    ("≡", "≡"),
    ("≤", "≤"),
    ("≥", "≥"),
    ("⊂", "⊂"),
    ("⊃", "⊃"),
    ("⊄", "⊄"),
    ("⊆", "⊆"),
    ("⊇", "⊇"),
    ("⊕", "⊕"),
    ("⊗", "⊗"),
    ("⊥", "⊥"),
    ("⋅", "⋅"),
    ("⌈", "⌈"),
    ("⌉", "⌉"),
    ("⌊", "⌊"),
    ("⌋", "⌋"),
    ("⟨", "〈"),
    ("⟩", "〉"),
    ("◊", "◊"),
    ("♠", "♠"),
    ("♣", "♣"),
    ("♥", "♥"),
    ("♦", "♦"),
    // Named entities for markup-significant and internationalization characters
    (""", """),
    ("&", "&"),
    ("<", "<"),
    (">", ">"),
    ("Œ", "Œ"),
    ("œ", "œ"),
    ("Š", "Š"),
    ("š", "š"),
    ("Ÿ", "Ÿ"),
    ("ˆ", "ˆ"),
    ("˜", "˜"),
    (" ", " "),
    (" ", " "),
    (" ", " "),
    ("‌", "‌"),
    ("‍", "‍"),
    ("‎", "‎"),
    ("‏", "‏"),
    ("–", "–"),
    ("—", "—"),
    ("‘", "‘"),
    ("’", "’"),
    ("‚", "‚"),
    ("“", "“"),
    ("”", "”"),
    ("„", "„"),
    ("†", "†"),
    ("‡", "‡"),
    ("‰", "‰"),
    ("‹", "‹"),
    ("›", "›"),
];