Refactor to support choice 'kind'
Add ParseRangeError
Add rust syntax range parsing tests
Implement rust syntax parsing
Change parse to not anticipate exclusivity
Add choice tests
Implement Rust syntax choices
Show that there are multiple in opt.choice*s*
Refactor repeated code in choice tests
Update documentation to reflect Rust range syntax
Alphabetize structopt options
Add character-wise tests
Add character-wise switch
Add print-after-end test
Add empty default separator for char-wise mode
Add char-wise forward and negative printing
Add pure reverse printing
Change to char_wise to user `char` instead of `u8`
Adds support for unicode (read: emojis)
Adds a newline char to end of each char-wise test because that's how it
is
Add writing traits for better code structure
Merge repetitive codepaths with generics
Unify print_choice_* funtion names
Reorder functions in choice module
Rename variable to avoid name confusion
Make default case for loop more readable
Abstract default case print loop
Add e2e test
Move vec create to print_choice_negative
Add output_field_separator option
Add output_field_separator tests
Change structopt req to 0.3
Separate negative choices into a function
Prevent tail printing output_field_separator
Change OFS to Option<String> with a default value of " "
Reorder arguments to write_bytes to parallel print_choice
Print output_separator in main loop if applicable
Add `cargo test` to Makefile
Add write_separator function
Add tags, todo, *.bench, *.svg and bench_output to .gitignore
Add test/bench.sh script. bench.sh runs the `bench` command on each
test/long*txt file with range 3:5 and saves the output to a file for
comparing performance across file sizes.
Inline printing in get_choice_slice
Change BufWriter<..stdout..> to BufWriter<T>
Add MockStdout for testing printing
Add more reverse range tests
Simplify word finding with a more uniform bounds check.
Add Makefile for generating flamegraphs
Redefine Choice struct as a start and end integer
Improve algorithm for finding words to print
Settle exclusivity at Config construction time
Add tests for nonexistant field_seps
Add regression test for preceding separator
Use handle.write instead of write! macro for tremendous speed up