penmanship 0.1.0

A Unicode character lookup library for converting text patterns to Unicode characters
Documentation
//! Greek letter mappings.

use phf::phf_map;

/// Greek letter mappings (lowercase and uppercase).
///
/// Case-sensitive: `alpha` returns lowercase α, `Alpha` returns uppercase Α.
pub static GREEK: phf::Map<&'static str, (&'static str, &'static str)> = phf_map! {
    // Lowercase
    "alpha" => ("\u{03B1}", "greek small letter alpha"),     // α
    "beta" => ("\u{03B2}", "greek small letter beta"),       // β
    "gamma" => ("\u{03B3}", "greek small letter gamma"),     // γ
    "delta" => ("\u{03B4}", "greek small letter delta"),     // δ
    "epsilon" => ("\u{03B5}", "greek small letter epsilon"), // ε
    "zeta" => ("\u{03B6}", "greek small letter zeta"),       // ζ
    "eta" => ("\u{03B7}", "greek small letter eta"),         // η
    "theta" => ("\u{03B8}", "greek small letter theta"),     // θ
    "iota" => ("\u{03B9}", "greek small letter iota"),       // ι
    "kappa" => ("\u{03BA}", "greek small letter kappa"),     // κ
    "lambda" => ("\u{03BB}", "greek small letter lambda"),   // λ
    "lamda" => ("\u{03BB}", "greek small letter lambda"),    // λ
    "mu" => ("\u{03BC}", "greek small letter mu"),           // μ
    "nu" => ("\u{03BD}", "greek small letter nu"),           // ν
    "xi" => ("\u{03BE}", "greek small letter xi"),           // ξ
    "omicron" => ("\u{03BF}", "greek small letter omicron"), // ο
    "pi" => ("\u{03C0}", "greek small letter pi"),           // π
    "rho" => ("\u{03C1}", "greek small letter rho"),         // ρ
    "sigma" => ("\u{03C3}", "greek small letter sigma"),     // σ
    "tau" => ("\u{03C4}", "greek small letter tau"),         // τ
    "upsilon" => ("\u{03C5}", "greek small letter upsilon"), // υ
    "phi" => ("\u{03C6}", "greek small letter phi"),         // φ
    "chi" => ("\u{03C7}", "greek small letter chi"),         // χ
    "psi" => ("\u{03C8}", "greek small letter psi"),         // ψ
    "omega" => ("\u{03C9}", "greek small letter omega"),     // ω

    // Uppercase
    "Alpha" => ("\u{0391}", "greek capital letter alpha"),   // Α
    "Beta" => ("\u{0392}", "greek capital letter beta"),     // Β
    "Gamma" => ("\u{0393}", "greek capital letter gamma"),   // Γ
    "Delta" => ("\u{0394}", "greek capital letter delta"),   // Δ
    "Theta" => ("\u{0398}", "greek capital letter theta"),   // Θ
    "Lambda" => ("\u{039B}", "greek capital letter lambda"), // Λ
    "Lamda" => ("\u{039B}", "greek capital letter lambda"),  // Λ
    "Pi" => ("\u{03A0}", "greek capital letter pi"),         // Π
    "Sigma" => ("\u{03A3}", "greek capital letter sigma"),   // Σ
    "Phi" => ("\u{03A6}", "greek capital letter phi"),       // Φ
    "Psi" => ("\u{03A8}", "greek capital letter psi"),       // Ψ
    "Omega" => ("\u{03A9}", "greek capital letter omega"),   // Ω
};

#[cfg(test)]
mod tests {
    use super::*;

    /// Test lowercase Greek letters.
    #[test]
    fn test_lowercase_greek() {
        assert_eq!(
            GREEK.get("alpha"),
            Some(&("\u{03B1}", "greek small letter alpha"))
        );
        assert_eq!(
            GREEK.get("beta"),
            Some(&("\u{03B2}", "greek small letter beta"))
        );
        assert_eq!(
            GREEK.get("gamma"),
            Some(&("\u{03B3}", "greek small letter gamma"))
        );
        assert_eq!(
            GREEK.get("delta"),
            Some(&("\u{03B4}", "greek small letter delta"))
        );
        assert_eq!(
            GREEK.get("lambda"),
            Some(&("\u{03BB}", "greek small letter lambda"))
        );
        assert_eq!(
            GREEK.get("omega"),
            Some(&("\u{03C9}", "greek small letter omega"))
        );
    }

    /// Test uppercase Greek letters.
    #[test]
    fn test_uppercase_greek() {
        assert_eq!(
            GREEK.get("Alpha"),
            Some(&("\u{0391}", "greek capital letter alpha"))
        );
        assert_eq!(
            GREEK.get("Gamma"),
            Some(&("\u{0393}", "greek capital letter gamma"))
        );
        assert_eq!(
            GREEK.get("Delta"),
            Some(&("\u{0394}", "greek capital letter delta"))
        );
        assert_eq!(
            GREEK.get("Omega"),
            Some(&("\u{03A9}", "greek capital letter omega"))
        );
    }

    /// Test case sensitivity.
    #[test]
    fn test_case_sensitivity() {
        // Lowercase and uppercase should be different
        assert_ne!(GREEK.get("alpha"), GREEK.get("Alpha"));
        assert_ne!(GREEK.get("omega"), GREEK.get("Omega"));
    }
}