summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDash Peters <dpeters@calacademy.org>2020-07-02 00:04:55 -0700
committerDash Peters <dpeters@calacademy.org>2020-07-02 00:04:55 -0700
commitf53ea60ed4cc47445239dab8bc6850016b22b32c (patch)
treeb84cba3ff1efdd0e354278a82bfded933e968b31 /src
parent5fdeeabb444c3c23e9785c13b79768c54c97c57d (diff)
parent05027b7c7400645294468772d30249371a2c200a (diff)
Merge remote-tracking branch 'sharkdp/master'
Diffstat (limited to 'src')
-rw-r--r--src/controller.rs2
-rw-r--r--src/printer.rs22
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(())
}