use yosina::recipes::{
ReplaceCircledOrSquaredCharactersOptions, ReplaceSuspiciousHyphensOptions, ToFullWidthOptions,
};
use yosina::{make_transliterator, TransliterationRecipe};
fn main() {
println!("=== Yosina Rust Basic Usage Example ===\n");
let recipe = TransliterationRecipe {
kanji_old_new: true,
replace_spaces: true,
replace_suspicious_hyphens_to_prolonged_sound_marks:
ReplaceSuspiciousHyphensOptions::Conservative,
replace_circled_or_squared_characters: ReplaceCircledOrSquaredCharactersOptions::Yes {
exclude_emojis: false,
},
replace_combined_characters: true,
replace_japanese_iteration_marks: true, to_fullwidth: ToFullWidthOptions::Yes {
u005c_as_yen_sign: false,
},
..Default::default()
};
let transliterator = make_transliterator(&recipe).unwrap();
let input = "①②③ ⒶⒷⒸ ㍿㍑㌠㋿"; let result = transliterator(input).unwrap();
println!("Input: {input}");
println!("Output: {result}");
println!("Expected: (1)(2)(3) (A)(B)(C) 株式会社リットルサンチーム令和");
println!("\n--- Old Kanji to New ---");
let old_kanji = "舊字體";
let result = transliterator(old_kanji).unwrap();
println!("Input: {old_kanji}");
println!("Output: {result}");
println!("Expected: 旧字体");
println!("\n--- Half-width to Full-width ---");
let half_width = "テストモジレツ";
let result = transliterator(half_width).unwrap();
println!("Input: {half_width}");
println!("Output: {result}");
println!("Expected: テストモジレツ");
println!("\n--- Japanese Iteration Marks Examples ---");
let iteration_examples = vec![
"佐々木", "すゝき", "いすゞ", "サヽキ", "ミスヾ", ];
for text in iteration_examples {
let result = transliterator(text).unwrap();
println!("{text} → {result}");
}
println!("\n--- Hiragana to Katakana Conversion ---");
let hira_kata_recipe = TransliterationRecipe {
hira_kata: yosina::recipes::HiraKataOptions::HiraToKata, ..Default::default()
};
let hira_kata_transliterator = make_transliterator(&hira_kata_recipe).unwrap();
let hira_kata_examples = vec![
"ひらがな", "これはひらがなです", "ひらがなとカタカナ", ];
for text in hira_kata_examples {
let result = hira_kata_transliterator(text).unwrap();
println!("{text} → {result}");
}
println!("\n--- Katakana to Hiragana Conversion ---");
let kata_hira_recipe = TransliterationRecipe {
hira_kata: yosina::recipes::HiraKataOptions::KataToHira, ..Default::default()
};
let kata_hira_transliterator = make_transliterator(&kata_hira_recipe).unwrap();
let kata_hira_examples = vec![
"カタカナ", "コレハカタカナデス", "カタカナとひらがな", ];
for text in kata_hira_examples {
let result = kata_hira_transliterator(text).unwrap();
println!("{text} → {result}");
}
}