braillify 2.0.1

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

use phf::phf_map;

pub static JUNGSEONG_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('')],
};
pub fn encode_jungsong(text: char) -> Result<&'static [u8], String> {
    if let Some(code) = JUNGSEONG_MAP.get(&text) {
        Ok(code)
    } else {
        Err("Invalid Korean jungseong character".to_string())
    }
}

#[cfg(test)]
mod test {
    use super::*;
    use crate::unicode::decode_unicode;

    #[rstest::rstest]
    #[case::ah('ㅏ', '⠣')]
    #[case::ya('ㅑ', '⠜')]
    #[case::eo('ㅓ', '⠎')]
    #[case::yeo('ㅕ', '⠱')]
    #[case::o('ㅗ', '⠥')]
    #[case::yo('ㅛ', '⠬')]
    #[case::u('ㅜ', '⠍')]
    pub fn test_encode_jungsong(#[case] jung: char, #[case] expected: char) {
        assert_eq!(
            encode_jungsong(jung).unwrap(),
            vec![decode_unicode(expected)]
        );
    }
}