use phf::phf_map;
use crate::{moeum::jungsong::JUNGSEONG_MAP, unicode::decode_unicode};
pub static KOREAN_PART_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('⠲')],
'ㅎ' => &[decode_unicode('⠴')],
};
pub fn encode_korean_part(text: char) -> Result<&'static [u8], String> {
if let Some(code) = KOREAN_PART_MAP.get(&text) {
return Ok(code);
}
if let Some(code) = JUNGSEONG_MAP.get(&text) {
return Ok(code);
}
Err("Invalid Korean part character".to_string())
}