kana_transliteration: fix k->h , add more tests
This commit is contained in:
+67
-10
@@ -115,7 +115,7 @@ fn katakana_vowel_map(katakana: char) -> Option<char> {
|
||||
// - Halfwidth and Fullwidth Forms: https://www.unicode.org/charts/PDF/UFF00.pdf
|
||||
|
||||
pub fn transliterate_katakana_to_hiragana(katakana: &str) -> String {
|
||||
let first_pass = transpose_codepoints_in_range(katakana, -96, 'ア'.into(), 'ヶ'.into());
|
||||
let first_pass = transpose_codepoints_in_range(katakana, -96, 'ァ'.into(), 'ヶ'.into());
|
||||
|
||||
// TODO: don't create a new result, just mutate the first pass in-place.
|
||||
let chars = first_pass.chars().collect::<Vec<_>>();
|
||||
@@ -458,11 +458,44 @@ pub fn transliterate_fullwidth_katakana_to_halfwidth_katakana(fullwidth: &str) -
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
// KATAKANA TO HIRAGANA
|
||||
|
||||
#[test]
|
||||
fn test_katakana_to_hiragana() {
|
||||
assert_eq!(transliterate_katakana_to_hiragana("カタカナ"), "かたかな");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_katakana_to_hiragana_with_dakuten() {
|
||||
assert_eq!(
|
||||
transliterate_katakana_to_hiragana("ガダガナピ"),
|
||||
"がだがなぴ"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_katakana_to_hiragana_with_small_tsu() {
|
||||
assert_eq!(transliterate_katakana_to_hiragana("ハッパ"), "はっぱ");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_katakana_to_hiragana_with_small_aiueo() {
|
||||
assert_eq!(
|
||||
transliterate_katakana_to_hiragana("ハァヒィフゥヘェホォ"),
|
||||
"はぁひぃふぅへぇほぉ"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_katakana_to_hiragana_with_small_ka_ke() {
|
||||
assert_eq!(transliterate_katakana_to_hiragana("カヵヶ"), "かゕゖ");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_katakana_to_hiragana_wi_we() {
|
||||
assert_eq!(transliterate_katakana_to_hiragana("ヰヱ"), "ゐゑ");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_katakana_to_hiragana_long_vocal_to_dash() {
|
||||
assert_eq!(
|
||||
@@ -503,14 +536,41 @@ mod tests {
|
||||
assert_eq!(transliterate_katakana_to_hiragana("サヾーエ"), "さゞあえ");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_katakana_to_hiragana_wi_we() {
|
||||
assert_eq!(transliterate_katakana_to_hiragana("ヰヱ"), "ゐゑ");
|
||||
}
|
||||
// HIRAGANA TO KATAKANA
|
||||
|
||||
#[test]
|
||||
fn test_hiragana_to_katakana() {
|
||||
assert_eq!(transliterate_hiragana_to_katakana("ひらがな"), "ヒラガナ");
|
||||
assert_eq!(transliterate_hiragana_to_katakana("ひらかな"), "ヒラカナ");
|
||||
}
|
||||
#[test]
|
||||
fn test_hiragana_to_katakana_with_dakuten() {
|
||||
assert_eq!(
|
||||
transliterate_hiragana_to_katakana("がだがなぴ"),
|
||||
"ガダガナピ"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_hiragana_to_katakana_with_small_tsu() {
|
||||
assert_eq!(transliterate_hiragana_to_katakana("はっぱ"), "ハッパ");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_hiragana_to_katakana_with_small_aiueo() {
|
||||
assert_eq!(
|
||||
transliterate_hiragana_to_katakana("はぁひぃふぅへぇほぉ"),
|
||||
"ハァヒィフゥヘェホォ"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_hiragana_to_katakana_with_small_ka_ke() {
|
||||
assert_eq!(transliterate_hiragana_to_katakana("かゕゖ"), "カヵヶ");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_hiragana_to_katakana_wi_we() {
|
||||
assert_eq!(transliterate_hiragana_to_katakana("ゐゑ"), "ヰヱ");
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -529,10 +589,7 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_hiragana_to_katakana_wi_we() {
|
||||
assert_eq!(transliterate_hiragana_to_katakana("ゐゑ"), "ヰヱ");
|
||||
}
|
||||
/// FULLWIDTH/HALFWIDTH
|
||||
|
||||
#[test]
|
||||
fn test_fullwidth_romaji_to_halfwidth_romaji() {
|
||||
|
||||
Reference in New Issue
Block a user