braillify 2.0.1

Rust 기반 크로스플랫폼 한국어 점역 라이브러리
Documentation
use crate::unicode::decode_unicode;
use phf::phf_map;

pub static JONGSEONG_MAP: phf::Map<char, &'static [u8]> = phf_map! {
    '' => &[decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode('')],
    '' => &[decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode('')],
    '' => &[decode_unicode('')],
    '' => &[decode_unicode('')],
    '' => &[decode_unicode('')],
    '' => &[decode_unicode(''), decode_unicode('')],
    '' => &[decode_unicode('')],
    '' => &[decode_unicode('')],
    '' => &[decode_unicode('')],
    '' => &[decode_unicode('')],
    '' => &[decode_unicode('')],
};

pub fn encode_jongseong(text: char) -> Result<&'static [u8], String> {
    if let Some(code) = JONGSEONG_MAP.get(&text) {
        return Ok(code);
    }
    Err("Invalid Korean jongseong character".to_string())
}

// pub fn decode_jongseong(code: u8) -> char {
//     JONGSEONG_MAP.get_by_right(&code).unwrap().clone()
// }

#[cfg(test)]
mod test {
    use super::*;
    #[rstest::rstest]
    #[case::giyeok('ㄱ', '⠁')]
    #[case::nieun('ㄴ', '⠒')]
    #[case::digeut('ㄷ', '⠔')]
    #[case::rieul('ㄹ', '⠂')]
    #[case::mieum('ㅁ', '⠢')]
    #[case::bieup('ㅂ', '⠃')]
    #[case::siot('ㅅ', '⠄')]
    #[case::ieung('ㅇ', '⠶')]
    #[case::jieut('ㅈ', '⠅')]
    #[case::chieut('ㅊ', '⠆')]
    #[case::kieuk('ㅋ', '⠖')]
    #[case::tieut('ㅌ', '⠦')]
    #[case::pieup('ㅍ', '⠲')]
    #[case::hieut('ㅎ', '⠴')]
    pub fn test_encode_jongseong(#[case] jong: char, #[case] expected: char) {
        assert_eq!(
            encode_jongseong(jong).unwrap(),
            vec![decode_unicode(expected)]
        );
    }
}