#![feature(doc_cfg)]
#[cfg(feature = "lang")]
mod conv;
#[cfg(feature = "lang")]
#[doc(cfg(feature = "lang"))]
pub use conv::{conv, Conv, ConvEnum};
#[cfg(feature = "f2j")]
pub mod f2j;
#[cfg(feature = "j2f")]
pub mod j2f;
#[cfg(feature = "f2j")]
pub fn f2j(s: impl AsRef<str>) -> String {
let s = s.as_ref();
s.chars()
.map(|c| f2j::F2J.get(&c).copied().unwrap_or(c))
.collect()
}
#[cfg(feature = "j2f")]
pub fn j2f(s: impl AsRef<str>) -> String {
let s = s.as_ref();
s.chars()
.map(|c| j2f::J2F.get(&c).copied().unwrap_or(c))
.collect()
}
pub fn is_cn_char(i: char) -> bool {
let i = i as u32;
for [b, e] in [
[0x4E00, 0x9FA5],
[0x9FA6, 0x9FCB],
[0x3400, 0x4DB5],
[0x20000, 0x2A6D6],
[0x2A700, 0x2B734],
[0x2B740, 0x2B81D],
[0x2F00, 0x2FD5],
[0x2E80, 0x2EF3],
[0xF900, 0xFAD9],
[0x2F800, 0x2FA1D],
[0xE815, 0xE86F],
[0xE400, 0xE5E8],
[0xE600, 0xE6CF],
[0x31C0, 0x31E3],
[0x2FF0, 0x2FFB],
[0x3105, 0x3120],
[0x31A0, 0x31BA],
] {
if i >= b && i <= e {
return true;
}
}
if i == 0x3007 {
return true;
}
false
}