#[cfg(feature = "enable_regex")]
use regex::Regex;
use crate::Options;
pub trait ConvertJapanese {
fn to_kana(self) -> String;
fn to_kana_with_opt(self, options: Options) -> String;
fn to_hiragana(self) -> String;
fn to_hiragana_with_opt(self, options: Options) -> String;
fn to_katakana(self) -> String;
fn to_katakana_with_opt(self, options: Options) -> String;
fn to_romaji(self) -> String;
fn to_romaji_with_opt(self, options: Options) -> String;
}
impl ConvertJapanese for &str {
#[inline]
fn to_kana(self) -> String {
crate::to_kana::to_kana(self)
}
#[inline]
fn to_kana_with_opt(self, options: Options) -> String {
crate::to_kana::to_kana_with_opt(self, options)
}
#[inline]
fn to_hiragana(self) -> String {
crate::to_hiragana::to_hiragana(self)
}
#[inline]
fn to_hiragana_with_opt(self, options: Options) -> String {
crate::to_hiragana::to_hiragana_with_opt(self, options)
}
#[inline]
fn to_katakana(self) -> String {
crate::to_katakana::to_katakana(self)
}
#[inline]
fn to_katakana_with_opt(self, options: Options) -> String {
crate::to_katakana::to_katakana_with_opt(self, options)
}
#[inline]
fn to_romaji(self) -> String {
crate::to_romaji::to_romaji(self)
}
#[inline]
fn to_romaji_with_opt(self, options: Options) -> String {
crate::to_romaji::to_romaji_with_opt(self, options)
}
}
pub trait IsJapaneseStr {
fn is_hiragana(&self) -> bool;
fn is_katakana(&self) -> bool;
fn is_kana(&self) -> bool;
fn is_romaji(&self) -> bool;
#[cfg_attr(docsrs, doc(cfg(feature = "enable_regex")))]
#[cfg(feature = "enable_regex")]
fn is_romaji_with_whitelist(&self, allowed: Option<&Regex>) -> bool;
fn is_kanji(&self) -> bool;
fn contains_kanji(&self) -> bool;
fn is_japanese(&self) -> bool;
#[cfg_attr(docsrs, doc(cfg(feature = "enable_regex")))]
#[cfg(feature = "enable_regex")]
fn is_japanese_with_whitelist(self, allowed: Option<&Regex>) -> bool;
fn is_mixed(&self) -> bool;
fn is_mixed_pass_kanji(&self, pass_kanji: bool) -> bool;
}
impl IsJapaneseStr for &str {
#[inline]
fn is_hiragana(&self) -> bool {
crate::is_hiragana::is_hiragana(self)
}
#[inline]
fn is_katakana(&self) -> bool {
crate::is_katakana::is_katakana(self)
}
#[inline]
fn is_kana(&self) -> bool {
crate::is_kana::is_kana(self)
}
#[inline]
fn is_kanji(&self) -> bool {
crate::is_kanji::is_kanji(self)
}
#[inline]
fn contains_kanji(&self) -> bool {
crate::is_kanji::contains_kanji(self)
}
#[inline]
#[cfg(feature = "enable_regex")]
fn is_japanese_with_whitelist(self, allowed: Option<&Regex>) -> bool {
crate::is_japanese::is_japanese_with_whitelist(self, allowed)
}
#[inline]
fn is_japanese(&self) -> bool {
crate::is_japanese::is_japanese(self)
}
#[inline]
fn is_romaji(&self) -> bool {
crate::is_romaji::is_romaji(self)
}
#[cfg(feature = "enable_regex")]
#[inline]
fn is_romaji_with_whitelist(&self, allowed: Option<&Regex>) -> bool {
crate::is_romaji::is_romaji_with_whitelist(self, allowed)
}
#[inline]
fn is_mixed(&self) -> bool {
crate::is_mixed::is_mixed(self)
}
#[inline]
fn is_mixed_pass_kanji(&self, pass_kanji: bool) -> bool {
crate::is_mixed::is_mixed_pass_kanji(self, pass_kanji)
}
}
pub trait IsJapaneseChar {
fn is_hiragana(&self) -> bool;
fn is_katakana(&self) -> bool;
fn is_kana(&self) -> bool;
fn is_kanji(&self) -> bool;
fn is_japanese(&self) -> bool;
fn is_japanese_number(&self) -> bool;
fn is_japanese_punctuation(&self) -> bool;
}
impl IsJapaneseChar for char {
#[inline]
fn is_hiragana(&self) -> bool {
crate::utils::is_char_hiragana(*self)
}
#[inline]
fn is_katakana(&self) -> bool {
crate::utils::is_char_katakana(*self)
}
#[inline]
fn is_kana(&self) -> bool {
crate::utils::is_char_kana(*self)
}
#[inline]
fn is_kanji(&self) -> bool {
crate::utils::is_char_kanji(*self)
}
#[inline]
fn is_japanese(&self) -> bool {
crate::utils::is_char_japanese(*self)
}
#[inline]
fn is_japanese_number(&self) -> bool {
crate::utils::is_char_japanese_number(*self)
}
#[inline]
fn is_japanese_punctuation(&self) -> bool {
crate::utils::is_char_japanese_punctuation(*self)
}
}