use lazy_static::lazy_static;
use crate::{tables::*, Variant, ZhConverter};
lazy_static! {
#[allow(non_upper_case_globals)]
pub static ref ZH_BLANK_CONVERTER: ZhConverter = build_converter(Variant::Zh, ("", ""));
pub static ref ZH_TO_HANT_CONVERTER: ZhConverter = build_converter(Variant::ZhHant, ZH_HANT_TABLE);
pub static ref ZH_TO_HANS_CONVERTER: ZhConverter = build_converter(Variant::ZhHans, ZH_HANS_TABLE);
pub static ref ZH_TO_TW_CONVERTER: ZhConverter = build_converter(Variant::ZhTW, *ZH_HANT_TW_TABLE);
pub static ref ZH_TO_HK_CONVERTER: ZhConverter = build_converter(Variant::ZhHK, *ZH_HANT_HK_TABLE);
pub static ref ZH_TO_MO_CONVERTER: ZhConverter = build_converter(Variant::ZhMO, *ZH_HANT_MO_TABLE);
pub static ref ZH_TO_CN_CONVERTER: ZhConverter = build_converter(Variant::ZhCN, *ZH_HANS_CN_TABLE);
pub static ref ZH_TO_SG_CONVERTER: ZhConverter = build_converter(Variant::ZhSG, *ZH_HANS_SG_TABLE);
pub static ref ZH_TO_MY_CONVERTER: ZhConverter = build_converter(Variant::ZhMY, *ZH_HANS_MY_TABLE);
}
#[inline(always)]
pub fn get_builtin_converter(target: Variant) -> &'static ZhConverter {
use Variant::*;
match target {
Zh => &*ZH_BLANK_CONVERTER,
ZhHant => &*ZH_TO_HANT_CONVERTER,
ZhHans => &*ZH_TO_HANS_CONVERTER,
ZhTW => &*ZH_TO_TW_CONVERTER,
ZhHK => &*ZH_TO_HK_CONVERTER,
ZhMO => &*ZH_TO_MO_CONVERTER,
ZhCN => &*ZH_TO_CN_CONVERTER,
ZhMY => &*ZH_TO_MY_CONVERTER,
ZhSG => &*ZH_TO_SG_CONVERTER,
}
}
#[inline(always)]
pub fn get_builtin_table(target: Variant) -> (&'static str, &'static str) {
use Variant::*;
match target {
Zh => ("", ""),
ZhHant => ZH_HANT_TABLE,
ZhHans => ZH_HANS_TABLE,
ZhTW => *ZH_HANT_TW_TABLE,
ZhHK => *ZH_HANT_HK_TABLE,
ZhMO => *ZH_HANT_MO_TABLE,
ZhCN => *ZH_HANS_CN_TABLE,
ZhMY => *ZH_HANS_MY_TABLE,
ZhSG => *ZH_HANS_SG_TABLE,
}
}