Rust crate providing some handy tools for working with Japanese text
jp_utils = "0.1.4"
```rust use jputils::furi::{segment::SegmentRef, Furigana}; // Feature: "furigana" use jputils::hiragana::Syllable; // Feature: "hiragana" use jputils::JapaneseExt; use jputils::{alphabet::Alphabet, counter::is_counter};
// Basic string functions on japanese alphabet using the jp_utils::JapaneseExt
trait
assert!("あ".iskana());
assert!("あ".ishiragana());
assert!("日本語".iskanji());
assert!("日ほん語".haskanji());
assert!("日本語".isjapanese());
assert!("例です".startswithalphabet(Alphabet::Kanji));
assert!("ょ".issmallkana());
assert!(!"よ".issmallkana());
assert!("、".issymbol());
asserteq!("1".tohalfwidth(), "1");
// Hiragana hacks (requires feature: "hiragana") asserteq!( Syllable::fromchar('く').todakuten(), Syllable::fromchar('ぐ') );
// Furigana parsing (requires feature "furigana"!) let furigana = Furigana("[日本|に|ほん]が[好|す]きです"); asserteq!(furigana.kanjistr(), "日本が好きです"); asserteq!(furigana.kanastr(), "にほんがすきです");
let mut iter = furigana.segments(); // and even iterate over each part asserteq!( iter.next(), Some(SegmentRef::newkanji("日本", &["に", "ほん"])) ); asserteq!(iter.next(), Some(SegmentRef::newkana("が"))); asserteq!(iter.next(), Some(SegmentRef::newkanji("好",&["す"]))); asserteq!(iter.next(), Some(SegmentRef::newkana("きです"))); assert_eq!(iter.next(), None);
// Counter assert!(iscounter("人")); assert!(!iscounter("楽"));
```