use wana_kana::ConvertJapanese;
pub fn convert_alphabetic_part_to_kana<T: AsRef<str>>(text: T) -> String {
text.as_ref().to_hiragana()
}
pub fn convert_to_kana<T: AsRef<str>>(text: T) -> String {
text.as_ref().to_kana()
}
pub fn convert_to_romaji<T: AsRef<str>>(text: T) -> String {
text.as_ref().to_romaji()
}
pub fn convert_alphabetic_to_kana<T: AsRef<str>>(text: T) -> String {
let mut part = String::new();
let mut result = String::new();
for char in text.as_ref().chars() {
let mut c = char as u32;
let normalized_c = match c {
0x41..=0x5a => {
c += 0x61; c -= 0x41; c
}
0x61..=0x7a => c, 0xff21..=0xff3a => {
c += 0x61; c -= 0xff21; c
}
0xff41..=0xff5a => {
c += 0x61; c -= 0xff41; c
}
0x2d | 0xff0d => 0x2d, _ => {
if !part.is_empty() {
result.push_str(&convert_alphabetic_part_to_kana(&part));
part.clear();
}
result.push(char);
continue;
}
};
part.push(char::from_u32(normalized_c).unwrap());
}
if !part.is_empty() {
result.push_str(&convert_alphabetic_part_to_kana(&part));
}
result
}