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