Fix field separator issue with no EOF

This commit is contained in:
Ryan Geary 2022-04-23 17:50:06 -04:00
parent bd32530e84
commit 344bd5c45b
4 changed files with 22 additions and 1 deletions

View file

@ -73,7 +73,9 @@ fn main_generic<W: WriteReceiver>(opt: Opt, handle: &mut W) -> Result<()> {
while let Some(line) = reader.read_line(&mut buffer) {
match line {
Ok(l) => {
let l = if config.opt.character_wise || config.opt.field_separator.is_some() {
let l = if (config.opt.character_wise || config.opt.field_separator.is_some())
&& l.ends_with("\n")
{
&l[0..l.len().saturating_sub(1)]
} else {
&l

8
test/choose_colon_1.txt Normal file
View file

@ -0,0 +1,8 @@
b
b
b
efgh
cd
cd

8
test/colons.txt Normal file
View file

@ -0,0 +1,8 @@
a:b
a:b:c
a:b:c:d
abcd:efgh
ab:cd:ef:
ab:cd:

View file

@ -25,6 +25,9 @@ diff -w <(cargo run -- 1:-1 -i ${test_dir}/alphabet.txt 2>/dev/null) <(cat "${te
diff -w <(cargo run -- 1:-2 -i ${test_dir}/alphabet.txt 2>/dev/null) <(cat "${test_dir}/choose_1x-2.txt")
diff -w <(cargo run -- 1:-3 -i ${test_dir}/alphabet.txt 2>/dev/null) <(cat "${test_dir}/choose_1x-3.txt")
# add tests for different delimiters
diff -w <(cargo run -- -f : 1 -i ${test_dir}/colons.txt 2>/dev/null) <(cat "${test_dir}/choose_colon_1.txt")
diff -w <(echo a:b | cargo run -- -f : 1) <(echo b)
diff -w <(echo -n a:b | cargo run -- -f : 1) <(echo b)
# add tests using piping
set +e