summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreinfachIrgendwer0815 <85333734+einfachIrgendwer0815@users.noreply.github.com>2023-09-10 14:28:35 +0200
committereinfachIrgendwer0815 <85333734+einfachIrgendwer0815@users.noreply.github.com>2024-02-24 13:51:44 +0100
commit6c2ce631018e3ea838bed85d956df705d9c297a1 (patch)
treece6c42f637b2e3727a16fb3b279729c2b308dc2f
parent13204c46e2334b823d265a45c0dd6006c912f1ef (diff)
Add squeeze functionality to `SimplePrinter`
-rw-r--r--src/printer.rs21
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(