Kathoey

Rust library for text feminization

Rust ![crates.io version]

Usage

Serialization from xml and export to binary serialized format (tho, export is optional, export from xml is fast enough)

rust fn from_xml() -> eyre::Result<()> { match Kathoey::from_xml("dict.opcorpora.xml") { Ok(k) => { if let Err(exerr) = k.save("dict.bin") { return Err(eyre!("Failed to export {:?}", exerr)); } } Err(kerr) => { return Err(eyre!("Failed to create {:?}", kerr)); } } Ok(()) }

Few test and import from binary:

rust fn from_binary() -> eyre::Result<()> { match Kathoey::load("dict.bin") { Ok(k) => { assert_eq!("Я сделала это!", k.feminize("Я сделал это!")); assert_eq!("Я потеряла ключи", k.feminize("Я потерял ключи")); assert_eq!("Хорошо, я ответила.", k.feminize("Хорошо, я ответил.")); assert_eq!("Я не хотела этого говорить на случай, если ты увидишь", k.feminize("Я не хотел этого говорить на случай, если ты увидишь")); assert_eq!("Я уверена, что у него была идея получше, он просто забыл", k.feminize("Я уверен, что у него была идея получше, он просто забыл")); assert_eq!("Вообще-то, я была немного удивлена.", k.feminize("Вообще-то, я был немного удивлен.")); assert_eq!("Мне нравилось, когда я в аниме и не беспокойся о спойлерах.", k.feminize("Мне нравилось, когда я в аниме и не беспокойся о спойлерах.")); assert_eq!("Я скажу ему это.", k.feminize("Я скажу ему это.")); assert_eq!("Начала наруто смотреть", k.feminize("Начал наруто смотреть")); } Err(kerr) => { return Err(eyre!("Failed to import rs {:?}", kerr)); } } Ok(()) }