Skip to content

Commit fb0dac4

Browse files
author
Ed Page
committed
refactor(dict): Allow 0..n corrections in BuiltIn
The main use case is taking `ther` -> `there` and adding `the` and `their`.
1 parent 444d2cc commit fb0dac4

File tree

6 files changed

+33747
-33668
lines changed

6 files changed

+33747
-33668
lines changed

Cargo.lock

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/typos-dict/codegen/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ codecov = { repository = "crate-ci/typos" }
1818
phf = { version = "0.8", features = ["unicase"] }
1919
phf_codegen = "0.8"
2020
csv = "1.1"
21+
itertools = "0.10"
2122
unicase = "2.5"
2223
codegenrs = "1.0"
2324
structopt = "0.3"

crates/typos-dict/codegen/src/main.rs

+10-4
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,26 @@ fn generate<W: std::io::Write>(file: &mut W) {
1818

1919
writeln!(
2020
file,
21-
"pub static WORD_DICTIONARY: phf::Map<unicase::UniCase<&'static str>, &'static str> = "
21+
"pub static WORD_DICTIONARY: phf::Map<unicase::UniCase<&'static str>, &'static [&'static str]> = "
2222
)
2323
.unwrap();
2424
let mut builder = phf_codegen::Map::new();
2525
let records: Vec<_> = csv::ReaderBuilder::new()
2626
.has_headers(false)
27+
.flexible(true)
2728
.from_reader(DICT)
2829
.records()
2930
.map(|r| r.unwrap())
3031
.collect();
3132
for record in &records {
32-
smallest = std::cmp::min(smallest, record[0].len());
33-
largest = std::cmp::max(largest, record[0].len());
34-
let value = format!(r#""{}""#, &record[1]);
33+
let mut record_fields = record.iter();
34+
let key = record_fields.next().unwrap();
35+
smallest = std::cmp::min(smallest, key.len());
36+
largest = std::cmp::max(largest, key.len());
37+
let value = format!(
38+
"&[{}]",
39+
itertools::join(record_fields.map(|field| format!(r#""{}""#, field)), ", ")
40+
);
3541
builder.entry(unicase::UniCase::new(&record[0]), &value);
3642
}
3743
let codegenned = builder.build();

0 commit comments

Comments
 (0)