diff options
author | einfachIrgendwer0815 <85333734+einfachIrgendwer0815@users.noreply.github.com> | 2023-09-10 14:28:35 +0200 |
---|---|---|
committer | einfachIrgendwer0815 <85333734+einfachIrgendwer0815@users.noreply.github.com> | 2024-02-24 13:51:44 +0100 |
commit | 6c2ce631018e3ea838bed85d956df705d9c297a1 (patch) | |
tree | ce6c42f637b2e3727a16fb3b279729c2b308dc2f | |
parent | 13204c46e2334b823d265a45c0dd6006c912f1ef (diff) |
Add squeeze functionality to `SimplePrinter`
-rw-r--r-- | src/printer.rs | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/printer.rs b/src/printer.rs index 343f4486..fc6c16f0 100644 --- a/src/printer.rs +++ b/src/printer.rs @@ -101,11 +101,15 @@ pub(crate) trait Printer { pub struct SimplePrinter<'a> { config: &'a Config<'a>, + consecutive_empty_lines: usize, } impl<'a> SimplePrinter<'a> { pub fn new(config: &'a Config) -> Self { - SimplePrinter { config } + SimplePrinter { + config, + consecutive_empty_lines: 0, + } } } @@ -134,6 +138,21 @@ impl<'a> Printer for SimplePrinter<'a> { _line_number: usize, line_buffer: &[u8], ) -> Result<()> { + // Skip squeezed lines. + if let Some(squeeze_limit) = self.config.squeeze_lines { + if String::from_utf8_lossy(line_buffer) + .trim_end_matches(|c| c == '\r' || c == '\n') + .is_empty() + { + self.consecutive_empty_lines += 1; + if self.consecutive_empty_lines > squeeze_limit { + return Ok(()); + } + } else { + self.consecutive_empty_lines = 0; + } + } + if !out_of_range { if self.config.show_nonprintable { let line = replace_nonprintable( |