yosina 2.0.0

Japanese text transliteration library
Documentation
use crate::char::{Char, CharPool};
use crate::transliterator::{
    TransliterationError, Transliterator, TransliteratorFactory, TransliteratorFactoryError,
};
use crate::transliterators::SimpleTransliterator;
static COMBINED_MAPPINGS: phf::Map<&'static str, &'static str> = phf::phf_map! { "⒞" => "(c)" , "␎" => "SO" , "㌥" => "デシ" , "␞" => "RS" , "🄩" => "(Z)" , "🄊" => "9," , "㋉" => "10月" , "㎇" => "GB" , "⒡" => "(f)" , "⒟" => "(d)" , "🄚" => "(K)" , "␡" => "DEL" , "㎘" => "kl" , "🄜" => "(M)" , "㎐" => "Hz" , "㋊" => "11月" , "㌲" => "ファラッド" , "㍠" => "8点" , "㌒" => "キュリー" , "㌿" => "ホン" , "㌣" => "セント" , "⒘" => "17." , "␇" => "BEL" , "㎍" => "µg" , "㋈" => "9月" , "㎤" => "cm3" , "⒔" => "13." , "㌝" => "コルナ" , "㎋" => "nF" , "㎯" => "rad/s2" , "㍈" => "ミクロン" , "⒪" => "(o)" , "㎃" => "mA" , "㏬" => "13日" , "🄖" => "(G)" , "㋿" => "令和" , "🈀" => "ほか" , "⒓" => "12." , "㈨" => "(九)" , "⒎" => "7." , "㏱" => "18日" , "㌙" => "グラムトン" , "㏗" => "pH" , "㍨" => "16点" , "㎭" => "rad" , "⒂" => "(15)" , "㎽" => "mW" , "㌡" => "シリング" , "㎺" => "pW" , "㋅" => "6月" , "㌘" => "グラム" , "␛" => "ESC" , "㎫" => "MPa" , "㍉" => "ミリ" , "㌓" => "ギルダー" , "㎨" => "m/s2" , "㌃" => "アール" , "🄄" => "3," , "㍿" => "株式会社" , "㈽" => "(企)" , "㏪" => "11日" , "🄐" => "(A)" , "🄟" => "(P)" , "㎀" => "pA" , "🄡" => "(R)" , "㎢" => "km2" , "㌔" => "キロ" , "℡" => "TEL" , "㏜" => "Sv" , "㌳" => "フィート" , "㏕" => "mil" , "㈮" => "(金)" , "㌹" => "ヘルツ" , "㎸" => "kV" , "🄝" => "(N)" , "㏘" => "p.m." , "⒁" => "(14)" , "㌁" => "アルファ" , "㎆" => "MB" , "㌛" => "クローネ" , "㋄" => "5月" , "㏹" => "26日" , "㏲" => "19日" , "㌯" => "ピクル" , "⑶" => "(3)" , "🄥" => "(V)" , "🄇" => "6," , "㌗" => "キロワット" , "🄔" => "(E)" , "㌴" => "ブッシェル" , "␉" => "HT" , "㈼" => "(監)" , "㏊" => "ha" , "㏔" => "mb" , "㏯" => "16日" , "␂" => "STX" , "㎠" => "cm2" , "🄒" => "(C)" , "⒴" => "(y)" , "⒮" => "(s)" , "㍴" => "bar" , "㏡" => "2日" , "㌅" => "インチ" , "㈬" => "(水)" , "㍢" => "10点" , "㏒" => "log" , "⑿" => "(12)" , "㏇" => "Co." , "⑵" => "(2)" , "␓" => "DC3" , "⅑" => "1/9" , "㌄" => "イニング" , "␐" => "DLE" , "㎗" => "dl" , "🄑" => "(B)" , "⒍" => "6." , "🉆" => "〔盗〕" , "㈠" => "(一)" , "🄀" => "0." , "␊" => "LF" , "㏎" => "KM" , "␖" => "SYN" , "⒑" => "10." , "㍁" => "ホール" , "㍞" => "6点" , "㈧" => "(八)" , "⒗" => "16." , "㍀" => "ポンド" , "㏵" => "22日" , "㏈" => "dB" , "㍩" => "17点" , "㎰" => "ps" , "㎼" => "µW" , "㋋" => "12月" , "⅝" => "5/8" , "␔" => "DC4" , "㎌" => "µF" , "␑" => "DC1" , "⑽" => "(10)" , "㌐" => "ギガ" , "㍆" => "マルク" , "㍮" => "22点" , "㏐" => "lm" , "㌵" => "フラン" , "㍸" => "dm2" , "⅙" => "1/6" , "㎧" => "m/s" , "␌" => "FF" , "㏿" => "gal" , "⒬" => "(q)" , "㈹" => "(代)" , "㍒" => "リラ" , "⅞" => "7/8" , "㌷" => "ペソ" , "㌟" => "サイクル" , "㍄" => "マイル" , "⒭" => "(r)" , "🄈" => "7," , "㍋" => "メガ" , "🉃" => "〔安〕" , "⅗" => "3/5" , "␆" => "ACK" , "🄂" => "1," , "㌾" => "ボルト" , "㏌" => "in" , "␍" => "CR" , "㍌" => "メガトン" , "㎊" => "pF" , "㍧" => "15点" , "㏍" => "K.K." , "␅" => "ENQ" , "⅒" => "1/10" , "㌠" => "サンチーム" , "㍳" => "AU" , "㎱" => "ns" , "㍚" => "2点" , "🄅" => "4," , "㏩" => "10日" , "㋇" => "8月" , "⒳" => "(x)" , "㍥" => "13点" , "㍭" => "21点" , "␋" => "VT" , "㈲" => "(有)" , "㉁" => "(休)" , "⒣" => "(h)" , "㍙" => "1点" , "㎁" => "nA" , "㎙" => "fm" , "㈩" => "(十)" , "␘" => "CAN" , "㍽" => "大正" , "㎚" => "nm" , "🄉" => "8," , "㌬" => "パーツ" , "㍵" => "oV" , "㈱" => "(株)" , "㈡" => "(二)" , "⒃" => "(16)" , "㎎" => "mg" , "㌇" => "エスクード" , "🅬" => "MR" , "㎉" => "kcal" , "⒜" => "(a)" , "㌀" => "アパート" , "㏸" => "25日" , "㏞" => "V/m" , "㎡" => "m2" , "⒅" => "(18)" , "⒀" => "(13)" , "⒧" => "(l)" , "№" => "No" , "㏶" => "23日" , "㋆" => "7月" , "␠" => "SP" , "㏠" => "1日" , "㉃" => "(至)" , "㍺" => "IU" , "㌺" => "ペンス" , "㍹" => "dm3" , "㍲" => "da" , "㏫" => "12日" , "␒" => "DC2" , "㌆" => "ウォン" , "㎟" => "mm2" , "㏙" => "ppm" , "⒫" => "(p)" , "🄗" => "(H)" , "㍜" => "4点" , "㎓" => "GHz" , "㈥" => "(六)" , "㌞" => "コーポ" , "㎿" => "MW" , "㎒" => "MHz" , "㏛" => "sr" , "㍖" => "レントゲン" , "⑴" => "(1)" , "␄" => "EOT" , "㏼" => "29日" , "㈪" => "(月)" , "㌂" => "アンペア" , "㌫" => "パーセント" , "㍫" => "19点" , "㎑" => "kHz" , "㌑" => "ギニー" , "␀" => "NUL" , "㎶" => "µV" , "🄕" => "(F)" , "℠" => "SM" , "㍐" => "ユアン" , "㍃" => "マイクロ" , "⅚" => "5/6" , "㍼" => "昭和" , "㎩" => "Pa" , "㈻" => "(学)" , "␈" => "BS" , "㌍" => "カロリー" , "🄢" => "(S)" , "🅫" => "MD" , "㌪" => "ハイツ" , "㏥" => "6日" , "🉅" => "〔打〕" , "㌋" => "カイリ" , "␚" => "SUB" , "㍯" => "23点" , "㎬" => "GPa" , "⑸" => "(5)" , "㌱" => "ビル" , "⒒" => "11." , "㎵" => "nV" , "⒌" => "5." , "␗" => "ETB" , "㏝" => "Wb" , "㈯" => "(土)" , "␝" => "GS" , "⒏" => "8." , "㌼" => "ベータ" , "㏨" => "9日" , "㏰" => "17日" , "㌽" => "ポイント" , "㍘" => "0点" , "㎝" => "cm" , "㍎" => "ヤード" , "㎄" => "kA" , "㏋" => "HP" , "㌮" => "ピアストル" , "㍷" => "dm" , "⅘" => "4/5" , "㌻" => "ページ" , "㈢" => "(三)" , "㎂" => "µA" , "㍗" => "ワット" , "㎻" => "nW" , "㍍" => "メートル" , "㏤" => "5日" , "㈳" => "(社)" , "㍡" => "9点" , "㎅" => "KB" , "🉁" => "〔三〕" , "⒐" => "9." , "㍟" => "7点" , "🄓" => "(D)" , "㏂" => "a.m." , "㏖" => "mol" , "㌦" => "ドル" , "⅕" => "1/5" , "⒚" => "19." , "㌧" => "トン" , "㎷" => "mV" , "㎏" => "kg" , "㏃" => "Bq" , "㏽" => "30日" , "⒄" => "(17)" , "⒲" => "(w)" , "㉂" => "(自)" , "㏀" => "kΩ" , "㍤" => "12点" , "㏳" => "20日" , "㌩" => "ノット" , "㍪" => "18点" , "🄦" => "(W)" , "⒱" => "(v)" , "⑹" => "(6)" , "㍑" => "リットル" , "🉇" => "〔勝〕" , "🄙" => "(J)" , "℻" => "FAX" , "⒯" => "(t)" , "㌶" => "ヘクタール" , "㌎" => "ガロン" , "㋌" => "Hg" , "㌤" => "ダース" , "㎖" => "ml" , "㈫" => "(火)" , "㈣" => "(四)" , "㈰" => "(日)" , "㍾" => "明治" , "㏟" => "A/m" , "㏭" => "14日" , "🄧" => "(X)" , "⅜" => "3/8" , "㌨" => "ナノ" , "🅪" => "MC" , "㋍" => "erg" , "㎹" => "MV" , "㏧" => "8日" , "🄠" => "(Q)" , "㍏" => "ヤール" , "㏚" => "PR" , "🄪" => "〔S〕" , "㍕" => "レム" , "㌭" => "バーレル" , "㌏" => "ガンマ" , "㍊" => "ミリバール" , "㎔" => "THz" , "㏏" => "kt" , "㏓" => "lx" , "㏺" => "27日" , "⒛" => "20." , "㍦" => "14点" , "⒆" => "(19)" , "㎮" => "rad/s" , "㌕" => "キログラム" , "⒇" => "(20)" , "␁" => "SOH" , "㌌" => "カラット" , "㈶" => "(財)" , "⑷" => "(4)" , "㉀" => "(祭)" , "⑾" => "(11)" , "㍛" => "3点" , "㏆" => "C/kg" , "㍇" => "マンション" , "㈺" => "(呼)" , "🉂" => "〔二〕" , "㈤" => "(五)" , "⒢" => "(g)" , "㈸" => "(労)" , "🄤" => "(U)" , "㈦" => "(七)" , "⑻" => "(8)" , "㍝" => "5点" , "🄁" => "0," , "⅟" => "1/" , "⒠" => "(e)" , "㌖" => "キロメートル" , "㋎" => "eV" , "㍻" => "平成" , "㏷" => "24日" , "⒙" => "18." , "⅓" => "1/3" , "㈿" => "(協)" , "㌉" => "オンス" , "㎈" => "cal" , "㌚" => "クルゼイロ" , "㎾" => "kW" , "㏦" => "7日" , "␜" => "FS" , "㏢" => "3日" , "™" => "TM" , "🉀" => "〔本〕" , "⒩" => "(n)" , "⅖" => "2/5" , "🉈" => "〔敗〕" , "⒤" => "(i)" , "⒥" => "(j)" , "⅐" => "1/7" , "㌰" => "ピコ" , "㍬" => "20点" , "㏮" => "15日" , "㏾" => "31日" , "🄣" => "(T)" , "⑼" => "(9)" , "㎥" => "m3" , "㏅" => "cd" , "㌈" => "エーカー" , "㍱" => "hPa" , "⒦" => "(k)" , "㎛" => "µm" , "㌸" => "ペニヒ" , "㏁" => "MΩ" , "㏴" => "21日" , "🉄" => "〔点〕" , "⒝" => "(b)" , "㍔" => "ルーブル" , "🄘" => "(I)" , "⒵" => "(z)" , "🄃" => "2," , "⅛" => "1/8" , "㎕" => "µl" , "㎞" => "km" , "㍶" => "pc" , "⒖" => "15." , "㈭" => "(木)" , "🄆" => "5," , "⒰" => "(u)" , "🄞" => "(O)" , "⑺" => "(7)" , "㋃" => "4月" , "㈾" => "(資)" , "㍣" => "11点" , "㈵" => "(特)" , "␟" => "US" , "⒈" => "1." , "㎳" => "ms" , "␙" => "EM" , "⒕" => "14." , "㏉" => "Gy" , "⒨" => "(m)" , "␕" => "NAK" , "㈴" => "(名)" , "㋀" => "1月" , "🄨" => "(Y)" , "㌢" => "センチ" , "⒉" => "2." , "㏄" => "cc" , "⒊" => "3." , "␏" => "SI" , "㍂" => "ホーン" , "㏑" => "ln" , "㎦" => "km3" , "↉" => "0/3" , "㏻" => "28日" , "㋁" => "2月" , "⅔" => "2/3" , "㍓" => "ルピー" , "㍰" => "24点" , "㉐" => "PTE" , "㌊" => "オーム" , "㎪" => "kPa" , "🄛" => "(L)" , "㎴" => "pV" , "㏣" => "4日" , "␃" => "ETX" , "⒋" => "4." , "㋂" => "3月" , "㎜" => "mm" , "㈷" => "(祝)" , "㎲" => "µs" , "㌜" => "ケース" , "㋏" => "LTD" , "㎣" => "mm3" , "㍅" => "マッハ" };
pub struct CombinedTransliterator {
    inner: SimpleTransliterator,
}
impl CombinedTransliterator {
    #[allow(clippy::new_without_default)]
    pub fn new() -> Self {
        Self {
            inner: SimpleTransliterator::new(&COMBINED_MAPPINGS),
        }
    }
}
impl Transliterator for CombinedTransliterator {
    fn transliterate<'a, 'b>(
        &self,
        pool: &mut CharPool<'a, 'b>,
        input: &[&'a Char<'a, 'b>],
    ) -> Result<Vec<&'a Char<'a, 'b>>, TransliterationError> {
        self.inner.transliterate(pool, input)
    }
}
pub struct CombinedTransliteratorFactory;
impl CombinedTransliteratorFactory {
    #[allow(clippy::new_without_default)]
    pub fn new() -> Self {
        Self
    }
}
impl TransliteratorFactory for CombinedTransliteratorFactory {
    fn new_transliterator(&self) -> Result<Box<dyn Transliterator>, TransliteratorFactoryError> {
        Ok(Box::new(CombinedTransliterator::new()))
    }
}