Commit graph

210 commits

Author SHA1 Message Date
Ed Page
b17f9c3a12 feat: Const some fns 2021-03-29 20:27:06 -05:00
Ed Page
75ba4ac535 perf(config): Get small-string optimization 2021-03-01 12:25:51 -06:00
Ed Page
b5827004a2 refactor(config): Simplify 2021-03-01 12:19:56 -06:00
Ed Page
0ea6de6019 refactor(cli): Clarify role of checks 2021-03-01 11:50:23 -06:00
Ed Page
b5f606f201 refactor(typos): Simplify the top-level API 2021-03-01 11:50:23 -06:00
Ed Page
e1e4ce8b61 refactor: Clarify roles 2021-03-01 11:50:23 -06:00
Ed Page
ddeee94cf8 refactor(checks): Make all state dynamic 2021-03-01 11:50:23 -06:00
Ed Page
1c3acd747a fix(config)!: Move binary to file
Seems like it would make sense to allow varying this by directory (when
supporting layering) and by file type.
2021-03-01 11:50:12 -06:00
Ed Page
dbac2eff4a feat(config): Use '-' to dump config to stdout 2021-01-04 19:29:43 -06:00
Ed Page
13a93ee8d1 fix(config): Provide all field defaults 2021-01-04 19:16:02 -06:00
Ed Page
ecb32a674a fix(config): Merge custom config over repo config
Custom config, like args, is more mutable, so it should be respected
more.
2021-01-04 19:16:02 -06:00
Ed Page
5db9a8e1c9 docs(config): Make config more discoverable 2021-01-04 19:16:02 -06:00
Ed Page
f27282fbc0 docs(args): Clarify what args are esclusive 2021-01-04 19:15:45 -06:00
Ed Page
70163fae61 docs(args): Clarify command line arguments 2021-01-04 14:54:50 -06:00
Ed Page
1c4d2ac32b feat: Support '-' for stdin
This helps with tool integration.

Fixes #195
2021-01-02 22:17:08 -06:00
Ed Page
998fad4390 feat: Check and replace UTF-16 files
We don't have good detection for non-UTF encodings and don't have
encoding support for UTF-32, so limiting it to just UTF-16.

Fixes #17
2021-01-02 19:25:00 -06:00
Ed Page
67222e9338 style: Address clippy 2021-01-02 13:49:28 -06:00
Ed Page
e6a4f49eb5 refactor: Clarify names 2021-01-02 13:10:40 -06:00
Ed Page
692f0ac095 refactor(typos): Focus API on primary use case 2021-01-02 13:10:40 -06:00
Ed Page
5f82dd6017 fix: Arg diff reports immediately 2021-01-02 13:10:36 -06:00
Ed Page
c900e48593 fix: Arg write-changes reports immediately 2021-01-02 13:10:30 -06:00
Ed Page
48112a47e9 refactor(parser): Abstract over lifetimes 2021-01-02 13:10:30 -06:00
Ed Page
663eb94d32 refactor: Switch Typos to check_file 2021-01-02 13:10:30 -06:00
Ed Page
6e53d7e719 refactor: Switch Words/Identifiers to check_file 2021-01-02 13:10:30 -06:00
Ed Page
d28174439b refactor: Switch FoundFiles to check_file 2021-01-02 13:10:30 -06:00
Ed Page
6c28376e50 refactor: Give checks full control 2021-01-02 13:10:30 -06:00
Ed Page
220a79ff30 refactor: Make room for parent function 2021-01-02 13:10:30 -06:00
Ed Page
bc90bacff2 refactor(typos): Pull out file logic 2021-01-02 13:10:30 -06:00
Ed Page
1e64080c05 refactor(typos): Open up the name Parser 2021-01-02 12:58:33 -06:00
Ed Page
e9b3378913 fix: Be friendlier with panics 2020-11-23 12:40:55 -06:00
Ed Page
b03df3aeae fix: Return more precise errors 2020-11-23 10:08:38 -06:00
Ed Page
869b916ca6 fix: Handle broken pipe 2020-11-21 21:57:12 -06:00
Ed Page
4ddbdcf5dd fix(cli): Define an error code policy
The main goal is to make spelling errors differentiated from other
errors.

Fixes #170
2020-11-14 21:17:29 -06:00
Ed Page
ce16d38cfd perf(dict): Skip checking numbers 2020-11-11 18:52:23 -06:00
Ed Page
d258e62f43 feat(report): Diff output mode 2020-11-11 18:52:23 -06:00
Ed Page
7a1fac7fab refactor(report): Use native types 2020-11-11 18:44:27 -06:00
Ed Page
482d320407 fix(dict): Ensure we fall through to built-in dict 2020-11-11 12:22:29 -06:00
Ed Page
6bdbd821e3 perf(dict): Avoid hashing unknwon words
Bypass hashing when we know (through str::len) that a word won't be in
the dict.

Master:
```
real    0m26.675s
user    0m33.683s
sys     0m4.535s
```

With this change
```
real    0m24.432s
user    0m32.492s
sys     0m4.190s
```
2020-11-10 20:57:04 -06:00
Ed Page
beaa0f4091 perf(dict): Avoid hashing unknwon words
Bypass hashing when we know (through str::len) that a word won't be in
the dict.

Master:
```
real    0m26.675s
user    0m33.683s
sys     0m4.535s
```

With this change:
```
real    0m24.060s
user    0m31.559s
sys     0m4.258s
```
2020-11-10 20:57:00 -06:00
Ed Page
18e31fa578 perf: Avoid hashing withut custom dict
`HashMap::get` (at least hashbrown) hashes before getting and doesn't
check if dict is empty.  For the custom dict, a common use case will
have the dict be empty.

Master:
```
real    0m26.675s
user    0m33.683s
sys     0m4.535s
```

Bypassing `HashMap::get`
```
real    0m16.415s
user    0m14.519s
sys     0m4.118s
```

On a moderately sized repo.
2020-11-10 20:56:54 -06:00
Ed Page
150c5bfdc1 perf: Hash faster for custom dicts
If we have to hash for the custom dict, we might as well be fast about
it.  We do not need a cryptographically secure algorithm since the
content is fixed for the user.

Master:
```
real    0m26.675s
user    0m33.683s
sys     0m4.535s
```

With ahash:
```
real    0m23.993s
user    0m30.800s
sys     0m4.440s
```
2020-11-10 20:56:49 -06:00
Ed Page
b7700fa214 refactor: Don't special case --files 2020-11-10 06:30:27 -06:00
Ed Page
e12cd8ed55 refactor: Layer files/filenames on buffer processing 2020-11-10 06:30:27 -06:00
Ed Page
3bcd8a130e refactor(report): Merge the typos types 2020-11-10 06:30:23 -06:00
Ed Page
2ef1d02164 Revert "feat(ignore): Typos-specific ignores"
This reverts commit 0052617fcd.

The fix for #134 was backwards.  It turns out `overrides` is for
including rather than ignoring.  Will need to look at this further.
2020-11-03 19:55:45 -06:00
Ed Page
f0c24b0afa feat(config): Allow separating config from source 2020-10-30 08:33:43 -05:00
Ed Page
736db10708 fix(format): Clarify message types 2020-10-28 21:01:33 -05:00
Ed Page
2e6cd39781 fix(config): Respect file's defaults 2020-10-28 20:58:48 -05:00
Ed Page
78d76bcbc6 fix: Be friendlier about error messages 2020-10-28 20:47:16 -05:00
Ed Page
527b9837b4 feat: Custom dictionary support
Switching `valid-*` to just `*` where you map typo to correction, with
support for always-valid and never-valid.

Fixes #9
2020-10-27 21:15:25 -05:00