mirror of
https://github.com/helix-editor/spellbook.git
synced 2025-10-06 08:12:43 +02:00
53 lines
1.3 KiB
Rust
53 lines
1.3 KiB
Rust
/*
|
|
Most basic example for the checker for quick debugging.
|
|
|
|
## Usage
|
|
|
|
```
|
|
$ cargo run --example check hello
|
|
Compiled the dictionary in 113ms
|
|
"hello" is in the dictionary (checked in 3µs)
|
|
$ cargo run --example check helol
|
|
Compiled the dictionary in 110ms
|
|
"helol" is NOT in the dictionary (checked in 21µs)
|
|
```
|
|
*/
|
|
use std::time::Instant;
|
|
|
|
use spellbook::Dictionary;
|
|
|
|
const EN_US_AFF: &str = include_str!("../vendor/en_US/en_US.aff");
|
|
const EN_US_DIC: &str = include_str!("../vendor/en_US/en_US.dic");
|
|
|
|
fn main() {
|
|
let mut args = std::env::args().skip(1);
|
|
let word = match args.next() {
|
|
Some(arg) => arg,
|
|
None => {
|
|
eprintln!("Usage: check WORD");
|
|
std::process::exit(1);
|
|
}
|
|
};
|
|
|
|
let now = Instant::now();
|
|
let dict = Dictionary::new(EN_US_AFF, EN_US_DIC).unwrap();
|
|
println!("Compiled the dictionary in {:?}", now.elapsed());
|
|
|
|
let (size, subtries) = dict.estimated_size();
|
|
println!("Estimated dictionary size: {size} (subtries: {subtries})");
|
|
|
|
let now = Instant::now();
|
|
if dict.check(&word) {
|
|
println!(
|
|
"\"{word}\" is in the dictionary (checked in {:?})",
|
|
now.elapsed()
|
|
);
|
|
} else {
|
|
eprintln!(
|
|
"\"{word}\" is NOT in the dictionary (checked in {:?})",
|
|
now.elapsed()
|
|
);
|
|
std::process::exit(1);
|
|
}
|
|
}
|