use phf::phf_map;
pub static SYMBOLS: phf::Map<&'static str, (&'static str, &'static str)> = phf_map! {
"(c)" => ("\u{00A9}", "copyright sign"), "(C)" => ("\u{00A9}", "copyright sign"), "copy" => ("\u{00A9}", "copyright sign"), "(r)" => ("\u{00AE}", "registered sign"), "(R)" => ("\u{00AE}", "registered sign"), "reg" => ("\u{00AE}", "registered sign"), "(tm)" => ("\u{2122}", "trade mark sign"), "(TM)" => ("\u{2122}", "trade mark sign"), "(t)" => ("\u{2122}", "trade mark sign"), "(T)" => ("\u{2122}", "trade mark sign"), "tm" => ("\u{2122}", "trade mark sign"), "(p)" => ("\u{2117}", "sound recording copyright"), "(P)" => ("\u{2117}", "sound recording copyright"),
"section" => ("\u{00A7}", "section sign"), "sect" => ("\u{00A7}", "section sign"), "para" => ("\u{00B6}", "pilcrow sign"), "paragraph" => ("\u{00B6}", "pilcrow sign"), "bullet" => ("\u{2022}", "bullet"), "middot" => ("\u{00B7}", "middle dot"), "dag" => ("\u{2020}", "dagger"), "dagger" => ("\u{2020}", "dagger"), "ddag" => ("\u{2021}", "double dagger"), "ddagger" => ("\u{2021}", "double dagger"), "deg" => ("\u{00B0}", "degree sign"), "degree" => ("\u{00B0}", "degree sign"), "prime" => ("\u{2032}", "prime"), "dprime" => ("\u{2033}", "double prime"), "Prime" => ("\u{2033}", "double prime"), "tprime" => ("\u{2034}", "triple prime"), "check" => ("\u{2713}", "check mark"), "checkmark" => ("\u{2713}", "check mark"), "cross" => ("\u{2717}", "ballot x"), "star" => ("\u{2605}", "black star"), "ostar" => ("\u{2606}", "white star"),
"nbsp" => ("\u{00A0}", "no-break space"), "thinsp" => ("\u{2009}", "thin space"), "tsp" => ("\u{2009}", "thin space"), "emsp" => ("\u{2003}", "em space"), "ensp" => ("\u{2002}", "en space"), "zwsp" => ("\u{200B}", "zero width space"), "zwnj" => ("\u{200C}", "zero width non-joiner"),
"spade" => ("\u{2660}", "black spade suit"), "heart" => ("\u{2665}", "black heart suit"), "diamond" => ("\u{2666}", "black diamond suit"), "club" => ("\u{2663}", "black club suit"),
"sharp" => ("\u{266F}", "music sharp sign"), "flat" => ("\u{266D}", "music flat sign"), "natural" => ("\u{266E}", "music natural sign"), "note" => ("\u{266A}", "eighth note"), "notes" => ("\u{266B}", "beamed eighth notes"),
"aries" => ("\u{2648}", "aries"), "taurus" => ("\u{2649}", "taurus"), "gemini" => ("\u{264A}", "gemini"), "cancer" => ("\u{264B}", "cancer"), "leo" => ("\u{264C}", "leo"), "virgo" => ("\u{264D}", "virgo"), "libra" => ("\u{264E}", "libra"), "scorpio" => ("\u{264F}", "scorpio"), "sagittarius" => ("\u{2650}", "sagittarius"), "capricorn" => ("\u{2651}", "capricorn"), "aquarius" => ("\u{2652}", "aquarius"), "pisces" => ("\u{2653}", "pisces"), };
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_legal_symbols() {
assert_eq!(SYMBOLS.get("(c)"), Some(&("\u{00A9}", "copyright sign")));
assert_eq!(SYMBOLS.get("(r)"), Some(&("\u{00AE}", "registered sign")));
assert_eq!(SYMBOLS.get("(tm)"), Some(&("\u{2122}", "trade mark sign")));
}
#[test]
fn test_general_symbols() {
assert_eq!(SYMBOLS.get("bullet"), Some(&("\u{2022}", "bullet")));
assert_eq!(SYMBOLS.get("degree"), Some(&("\u{00B0}", "degree sign")));
assert_eq!(SYMBOLS.get("star"), Some(&("\u{2605}", "black star")));
}
#[test]
fn test_card_suits() {
assert_eq!(
SYMBOLS.get("spade"),
Some(&("\u{2660}", "black spade suit"))
);
assert_eq!(
SYMBOLS.get("heart"),
Some(&("\u{2665}", "black heart suit"))
);
assert_eq!(
SYMBOLS.get("diamond"),
Some(&("\u{2666}", "black diamond suit"))
);
assert_eq!(SYMBOLS.get("club"), Some(&("\u{2663}", "black club suit")));
}
#[test]
fn test_music_notation() {
assert_eq!(
SYMBOLS.get("sharp"),
Some(&("\u{266F}", "music sharp sign"))
);
assert_eq!(SYMBOLS.get("flat"), Some(&("\u{266D}", "music flat sign")));
assert_eq!(SYMBOLS.get("note"), Some(&("\u{266A}", "eighth note")));
}
#[test]
fn test_zodiac() {
assert_eq!(SYMBOLS.get("aries"), Some(&("\u{2648}", "aries")));
assert_eq!(SYMBOLS.get("leo"), Some(&("\u{264C}", "leo")));
assert_eq!(SYMBOLS.get("pisces"), Some(&("\u{2653}", "pisces")));
}
}