kk /株式会社/ のようなアルファベットのみのものを辞書から読まないように

Close #260
This commit is contained in:
Tokuhiro Matsuno
2023-01-30 10:15:38 +09:00
parent e593233222
commit 09107fd793

View File

@ -61,6 +61,15 @@ pub fn parse_skkdict(src: &str) -> Result<HashMap<String, Vec<String>>> {
continue;
};
// 読み仮名がアルファベットのものは除外する。
// `kk /株式会社/` のようなエントリーがライブコンバージョン時に邪魔になるため。
// https://github.com/akaza-im/akaza/issues/260
if let Some(first_yomi_char) = yomi.chars().next() {
if first_yomi_char.is_ascii_alphabetic() {
continue;
}
}
// example:
// とくひろ /徳宏/徳大/徳寛/督弘/
// 末尾の slash が抜けてる場合もあるエントリーが SKK-JISYO.L に入っていたりするので注意。
@ -106,15 +115,9 @@ mod tests {
#[test]
fn missing_trailing_slash() -> anyhow::Result<()> {
let src = ";; okuri-nasi entries.\n\
sars-cov /severe acute respiratory syndrome coronavirus/SARSコロナウイルス";
こな /粉";
let dict = parse_skkdict(src)?;
assert_eq!(
*dict.get("sars-cov").unwrap(),
vec![
"severe acute respiratory syndrome coronavirus".to_string(),
"SARSコロナウイルス".to_string(),
]
);
assert_eq!(*dict.get("こな").unwrap(), vec!["".to_string()]);
Ok(())
}
@ -131,4 +134,15 @@ mod tests {
Ok(())
}
/// パース結果が空になる場合は無視する
#[test]
fn kk() -> anyhow::Result<()> {
let src = ";; okuri-nasi entries.\n\
kk /株式会社/\n";
let dict = parse_skkdict(src)?;
assert_eq!(dict.get("kk"), None);
Ok(())
}
}