diff options
author | Dash Peters <dpeters@calacademy.org> | 2020-07-02 00:04:55 -0700 |
---|---|---|
committer | Dash Peters <dpeters@calacademy.org> | 2020-07-02 00:04:55 -0700 |
commit | f53ea60ed4cc47445239dab8bc6850016b22b32c (patch) | |
tree | b84cba3ff1efdd0e354278a82bfded933e968b31 /src | |
parent | 5fdeeabb444c3c23e9785c13b79768c54c97c57d (diff) | |
parent | 05027b7c7400645294468772d30249371a2c200a (diff) |
Merge remote-tracking branch 'sharkdp/master'
Diffstat (limited to 'src')
-rw-r--r-- | src/controller.rs | 2 | ||||
-rw-r--r-- | src/printer.rs | 22 |
2 files changed, 17 insertions, 7 deletions
diff --git a/src/controller.rs b/src/controller.rs index e11080f5..3fe44a72 100644 --- a/src/controller.rs +++ b/src/controller.rs @@ -113,7 +113,7 @@ impl<'b> Controller<'b> { }; let mut printer: Box<dyn Printer> = if self.config.loop_through { - Box::new(SimplePrinter::new()) + Box::new(SimplePrinter::new(&self.config)) } else { Box::new(InteractivePrinter::new( &self.config, diff --git a/src/printer.rs b/src/printer.rs index addc7972..7e369a6e 100644 --- a/src/printer.rs +++ b/src/printer.rs @@ -52,15 +52,17 @@ pub(crate) trait Printer { ) -> Result<()>; } -pub struct SimplePrinter; +pub struct SimplePrinter<'a> { + config: &'a Config<'a> +} -impl SimplePrinter { - pub fn new() -> Self { - SimplePrinter {} +impl<'a> SimplePrinter<'a> { + pub fn new(config: &'a Config) -> Self { + SimplePrinter { config } } } -impl Printer for SimplePrinter { +impl<'a> Printer for SimplePrinter<'a> { fn print_header( &mut self, _handle: &mut dyn Write, @@ -86,7 +88,15 @@ impl Printer for SimplePrinter { line_buffer: &[u8], ) -> Result<()> { if !out_of_range { - handle.write_all(line_buffer)?; + if self.config.show_nonprintable { + let line = replace_nonprintable(line_buffer, self.config.tab_width); + write!(handle, "{}", line)?; + if line_buffer.last() == Some(&b'\n') { + writeln!(handle)?; + } + } else { + handle.write_all(line_buffer)? + }; } Ok(()) } |