mirror of
https://github.com/crate-ci/typos.git
synced 2024-11-21 16:41:01 -05:00
refactor: Switch to bytes for symbol lookup
This commit is contained in:
parent
779db94ecb
commit
b6aabc9392
2 changed files with 16 additions and 17 deletions
|
@ -12,7 +12,7 @@ impl Dictionary {
|
|||
DICTIONARY.get(word).map(|s| *s)
|
||||
}
|
||||
|
||||
pub fn correct_bytes<'s>(&'s self, word: &[u8]) -> Option<&'s [u8]> {
|
||||
std::str::from_utf8(word).ok().and_then(|word| DICTIONARY.get(word)).map(|s| s.as_bytes())
|
||||
pub fn correct_bytes<'s>(&'s self, word: &[u8]) -> Option<&'s str> {
|
||||
std::str::from_utf8(word).ok().and_then(|word| DICTIONARY.get(word)).map(|s| *s)
|
||||
}
|
||||
}
|
||||
|
|
29
src/lib.rs
29
src/lib.rs
|
@ -17,21 +17,20 @@ pub fn process_file(path: &std::path::Path, dictionary: &Dictionary, report: rep
|
|||
for (line_idx, line) in grep_searcher::LineIter::new(b'\n', &buffer).enumerate() {
|
||||
let line_num = line_idx + 1;
|
||||
for token in identifier::tokenize(line) {
|
||||
if let Some(word) = std::str::from_utf8(token.token).ok() {
|
||||
// Correct tokens as-is
|
||||
if let Some(correction) = dictionary.correct_str(word) {
|
||||
let col_num = token.offset;
|
||||
let msg = report::Message {
|
||||
path,
|
||||
line,
|
||||
line_num,
|
||||
col_num,
|
||||
word,
|
||||
correction,
|
||||
non_exhaustive: (),
|
||||
};
|
||||
report(msg);
|
||||
}
|
||||
// Correct tokens as-is
|
||||
if let Some(correction) = dictionary.correct_bytes(token.token) {
|
||||
let word = String::from_utf8_lossy(token.token);
|
||||
let col_num = token.offset;
|
||||
let msg = report::Message {
|
||||
path,
|
||||
line,
|
||||
line_num,
|
||||
col_num,
|
||||
word: word.as_ref(),
|
||||
correction,
|
||||
non_exhaustive: (),
|
||||
};
|
||||
report(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue