Skip to content

Commit

Permalink
refactor: Switch to bytes for symbol lookup
Browse files Browse the repository at this point in the history
  • Loading branch information
epage committed Apr 17, 2019
1 parent 779db94 commit b6aabc9
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 17 deletions.
4 changes: 2 additions & 2 deletions src/dict.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 changes: 14 additions & 15 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
}
Expand Down

0 comments on commit b6aabc9

Please sign in to comment.