From 53bbe41856f79e37a0ed9932aac53a91207b5694 Mon Sep 17 00:00:00 2001 From: Nathan Fisher Date: Tue, 21 Jan 2025 23:50:40 -0500 Subject: [PATCH] Encoding - columns are specified per byte of input --- src/encode.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/encode.rs b/src/encode.rs index d64faf1..9549ae1 100644 --- a/src/encode.rs +++ b/src/encode.rs @@ -52,7 +52,13 @@ impl Encoder { break; } if n_bytes == 0 { - writeln!(self.writer)?; + if let Some(w) = self.wrap { + if total % w != 0 { + writeln!(self.writer)?; + } + } else { + writeln!(self.writer)?; + } break; } let mut idx = usize::from(ibuf[0] & 0b1111); @@ -62,36 +68,34 @@ impl Encoder { match self.style { Style::Plain => { if let Some(w) = self.wrap { - if total > 0 && total % w < 2 { + if total > 0 && total % w == 0 { writeln!(self.writer)?; } } self.writer.write_all(&obuf)?; - total += 2; } Style::Spaces => { if let Some(w) = self.wrap { - if total % w < 3 { + if total > 0 && total % w == 0 { writeln!(self.writer)?; } else if total > 0 { write!(self.writer, " ")?; } } self.writer.write_all(&obuf)?; - total += 3; } Style::SpacesWithHex => { if let Some(w) = self.wrap { - if total % w < 5 { + if total > 0 && total % w == 0 { writeln!(self.writer)?; } else if total > 0 { write!(self.writer, " ")?; } } write!(self.writer, "0x{}{}", obuf[0], obuf[1])?; - total += 5; } } + total += 1; } Ok(()) } @@ -124,7 +128,7 @@ mod tests { let infile = File::open("testdata/lorem.txt").unwrap(); let reader = BufReader::new(infile); let outfile = fs::read_to_string("testdata/lorem_b16.txt").unwrap(); - let mut encoder = Encoder::new(reader, vec![], None, Some(76)); + let mut encoder = Encoder::new(reader, vec![], None, Some(38)); encoder.encode().unwrap(); assert_eq!(encoder.writer, outfile.as_bytes()); }