braillify 2.0.1

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

pub static CHOSEONG_MAP: phf::Map<char, u8> = phf_map! {
    '' => decode_unicode(''),
    '' => decode_unicode(''),
    '' => decode_unicode(''),
    '' => decode_unicode(''),
    '' => decode_unicode(''),
    '' => decode_unicode(''),
    '' => decode_unicode(''),
    // 'ㅇ' => decode_unicode(''), // skip ㅇ of choseong
    '' => decode_unicode(''),
    '' => decode_unicode(''),
    '' => decode_unicode(''),
    '' => decode_unicode(''),
    '' => decode_unicode(''),
    '' => decode_unicode(''),
};

pub fn encode_choseong(text: char) -> Result<u8, String> {
    if let Some(code) = CHOSEONG_MAP.get(&text) {
        Ok(*code)
    } else {
        Err("Invalid Korean choseong character".to_string())
    }
}

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

    use super::*;
    #[rstest::rstest]
    #[case::giyeok('ㄱ', '⠈')]
    #[case::nieun('ㄴ', '⠉')]
    #[case::digeut('ㄷ', '⠊')]
    #[case::rieul('ㄹ', '⠐')]
    #[case::mieum('ㅁ', '⠑')]
    #[case::bieup('ㅂ', '⠘')]
    #[case::siot('ㅅ', '⠠')]
    #[case::jieut('ㅈ', '⠨')]
    #[case::chieut('ㅊ', '⠰')]
    #[case::kieuk('ㅋ', '⠋')]
    #[case::tieut('ㅌ', '⠓')]
    #[case::pieup('ㅍ', '⠙')]
    #[case::hieut('ㅎ', '⠚')]
    pub fn test_encode_choseong(#[case] cho: char, #[case] expected: char) {
        assert_eq!(encode_choseong(cho).unwrap(), decode_unicode(expected));
    }
}