Commit graph

55 commits

Author SHA1 Message Date
Ryan Geary
fc6a2ddbda Add regression tests for #16 2020-06-08 22:52:47 -04:00
Ryan Geary
1ee01c6de0 Add alternate Rust-y range syntax (#11)
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
2020-06-08 22:16:02 -04:00
Ryan Geary
a66621380b Add character-wise chooseing
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
2020-06-02 14:41:30 -04:00
Ryan Geary
7243843d2f [FEATURE] specify output field delimiter (#8)
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
2020-04-06 17:13:57 -04:00
Ryan Geary
d40c9d5234 Non-greedy String Splitting (#7)
* Add non_greedy flag

* Add non-greedy tests

* Prevent printing spaces for empty fields

* Prevent filtering non-empty fields when non-greedy
2020-04-04 18:09:37 -04:00
Ryan Geary
b0aa310c83 Update documentation for v0.1.4 2020-04-02 10:14:29 -04:00
Ryan Geary
e78ea2783c Add negative choice and parsing tests
Allow negative ranges as long as they aren't reversed too

Allow reversed negative ranges iff both indices are negative
2020-04-01 13:15:32 -04:00
Ryan Geary
a90a5cb742 Cargo fmt 2020-03-17 13:44:14 -04:00
Ryan Geary
41e060680e Handle failure to open input file 2020-03-17 13:43:49 -04:00
Ryan Geary
dfe4c2cad0 Reassign exit codes and clean up e2e_test
0 - Success
1 - Argument parsing error
2 - Regex compilation error
2020-03-17 13:26:35 -04:00
Ryan Geary
47c9c73c4b Separate Opt into separate mod 2020-03-15 19:40:41 -04:00
Ryan Geary
f87a3f1658 Use lazy_static for parse_choice regex 2020-03-15 16:30:59 -04:00
Ryan Geary
afb4bf4734 Return ParseIntErrors from parse_choice 2020-03-15 16:14:17 -04:00
Ryan Geary
81589d8aab Remove lingering flame_it cfg 2020-03-15 14:51:26 -04:00
Ryan Geary
c81efcf42f Add custom BufReader to cut down on allocation time 2020-03-15 14:46:50 -04:00
Ryan Geary
b6d3e4ba5a Add error messages for stdout writes 2020-03-14 23:02:31 -04:00
Ryan Geary
94085bb302 Make regex compilation errors more specific 2020-03-14 22:20:52 -04:00
Ryan Geary
389c29822b Improve performance and add profiling tooling
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
2020-03-10 00:03:14 -04:00
Ryan Geary
c729ad3f00 RustFmt 2019-10-24 21:05:09 -04:00
Ryan Geary
f662219407 [BREAKING] Default to inclusive ranges, -x for exclusive 2019-10-13 22:00:15 -04:00
Ryan Geary
0be16bf1d9 Add reverse ranges 2019-10-13 21:40:59 -04:00
Ryan Geary
e7169ea2e8 Add print_out_of_order test 2019-10-13 20:32:00 -04:00
Ryan Geary
c204f99444 Reorganize massively 2019-10-10 21:24:07 -04:00
Ryan Geary
f722cbcbbb Remove repeated Regex compilation 2019-10-09 18:23:02 -04:00
Ryan Geary
09ddbb4f65 Use BufWriter and write(ln)! instead of print(ln)! 2019-09-29 23:10:33 -04:00
Ryan Geary
ba26c1f42d Stop collecting lines of stdin 2019-09-29 23:10:14 -04:00
Ryan Geary
5c96955257 Add a bunch of get_choice_slice tests 2019-09-17 23:40:35 -04:00
Ryan Geary
4afdc50158 Separate slice finding from printing 2019-09-17 23:40:35 -04:00
Ryan Geary
5703ed02a1 Move parse_choice tests into their own test module 2019-09-17 23:40:35 -04:00
Ryan Geary
55ac2acc8e Add future tests 2019-09-17 23:40:35 -04:00
Ryan Geary
c81af46d4e Add successful parsing tests 2019-09-17 23:40:35 -04:00
Ryan Geary
e668d9f508 Add first test 2019-09-17 23:40:35 -04:00
Ryan Geary
fd66e3cfb7 Move most of the processing out of main 2019-09-17 23:40:30 -04:00
Ryan Geary
49b88bd0be Convert panic!s to eprintln!s and add exit stati 2019-09-11 22:55:32 -04:00
Ryan Geary
da7a536fa6 Add regex matching with field separator 2019-09-11 22:14:57 -04:00
Ryan Geary
5a5a77e88f Unify enumerating lines in print_choice 2019-09-11 11:52:20 -04:00
Ryan Geary
e7197092b5 Validate vector indeces 2019-09-10 23:51:01 -04:00
Ryan Geary
ddf563d41b Allow for inclusive ranges and move choice parsing into Choice enum 2019-09-10 22:15:57 -04:00
Ryan Geary
8a430e0fdf Update choice help document 2019-09-10 22:14:42 -04:00
Ryan Geary
121d2f9d5a Add Range printing 2019-09-10 21:06:35 -04:00
Ryan Geary
5373821427 RustFmt 2019-09-10 21:06:20 -04:00
Ryan Geary
42b1af66a6 Iterate through lines and choices 2019-09-10 17:59:42 -04:00
Ryan Geary
055f38a9ba Add flag for input file, change inclusive short to n 2019-09-06 17:51:25 -04:00
Ryan Geary
97ef864782 Apply RustFmt 2019-09-06 17:14:03 -04:00
Ryan Geary
be24d64a60 change parse_range -> parse_choice 2019-09-06 16:26:26 -04:00
Ryan Geary
2b299ad9c1 Parse single field numbers 2019-09-06 16:21:13 -04:00
Ryan Geary
8da5f639ed Change arg from Range to Choice 2019-09-06 16:01:21 -04:00
Ryan Geary
2779ed3983 Rework Choice struct 2019-09-06 15:59:53 -04:00
Ryan Geary
1ac2906146 Handle errors in parse_range 2019-09-06 13:28:06 -04:00
Ryan Geary
46d79d7250 Add explicit dyn before Traits 2019-09-06 13:27:38 -04:00