diff --git a/src/bin/hexyl.rs b/src/bin/hexyl.rs index bafed37..d11f1b0 100644 --- a/src/bin/hexyl.rs +++ b/src/bin/hexyl.rs @@ -153,14 +153,14 @@ fn run() -> Result<(), AnyhowError> { ), ) .arg( - Arg::new("columns") - .short('w') - .long("columns") + Arg::new("panels") + .short('p') + .long("panels") .takes_value(true) .value_name("N") .help( - "Sets the number of hex data columns to be displayed. \ - `--columns=auto` will display the maximum number of hex data columns \ + "Sets the number of hex data panels to be displayed. \ + `--panels=auto` will display the maximum number of hex data panels \ based on the current terminal width", ), ) @@ -170,11 +170,11 @@ fn run() -> Result<(), AnyhowError> { .long("terminal-width") .takes_value(true) .value_name("N") - .conflicts_with("columns") + .conflicts_with("panels") .help( "Sets the number of terminal columns to be displayed.\nSince the terminal \ width may not be an evenly divisible by the width per hex data column, this \ - will use the greatest number of hex data columns that can fit in the requested \ + will use the greatest number of hex data panels that can fit in the requested \ width but still leave some space to the right.\nCannot be used with other \ width-setting options.", ), @@ -296,7 +296,7 @@ fn run() -> Result<(), AnyhowError> { .transpose()? .unwrap_or(0); - let max_columns_fn = |terminal_width: u16| { + let max_panels_fn = |terminal_width: u16| { let offset = if show_position_panel { 10 } else { 1 }; let col_width = if show_char_panel { 35 } else { 26 }; if (terminal_width - offset) / col_width < 1 { @@ -306,32 +306,32 @@ fn run() -> Result<(), AnyhowError> { } }; - let columns = if matches.value_of("columns") == Some("auto") { - max_columns_fn(terminal_size().ok_or_else(|| anyhow!("not a TTY"))?.0 .0) - } else if let Some(columns) = matches - .value_of("columns") + let panels = if matches.value_of("panels") == Some("auto") { + max_panels_fn(terminal_size().ok_or_else(|| anyhow!("not a TTY"))?.0 .0) + } else if let Some(panels) = matches + .value_of("panels") .map(|s| { s.parse::().map(u16::from).context(anyhow!( - "failed to parse `--columns` arg {:?} as unsigned nonzero integer", + "failed to parse `--panels` arg {:?} as unsigned nonzero integer", s )) }) .transpose()? { - columns + panels } else if let Some(terminal_width) = matches - .value_of("terminal_width") - .map(|s| { - s.parse::().map(u16::from).context(anyhow!( + .value_of("terminal_width") + .map(|s| { + s.parse::().map(u16::from).context(anyhow!( "failed to parse `--terminal-width` arg {:?} as unsigned nonzero integer", - s - )) - }) - .transpose()? - { - max_columns_fn(terminal_width) - } else { - 2 + s + )) + }) + .transpose()? + { + max_panels_fn(terminal_width) + } else { + 2 }; let stdout = io::stdout(); @@ -344,7 +344,7 @@ fn run() -> Result<(), AnyhowError> { show_position_panel, border_style, squeeze, - columns, + panels, ); printer.display_offset(skip_offset + display_offset); printer.print_all(&mut reader).map_err(|e| anyhow!(e))?; diff --git a/src/lib.rs b/src/lib.rs index e72c8ba..044f22d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -155,7 +155,7 @@ pub struct Printer<'a, Writer: Write> { squeezer: Squeezer, display_offset: u64, /// The number of panels to draw. - columns: u16, + panels: u16, } impl<'a, Writer: Write> Printer<'a, Writer> { @@ -166,7 +166,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> { show_position_panel: bool, border_style: BorderStyle, use_squeeze: bool, - columns: u16, + panels: u16, ) -> Printer<'a, Writer> { Printer { idx: 1, @@ -202,9 +202,9 @@ impl<'a, Writer: Write> Printer<'a, Writer> { .collect() }) .unwrap_or_default(), - squeezer: Squeezer::new(use_squeeze, 8 * columns as u64), + squeezer: Squeezer::new(use_squeeze, 8 * panels as u64), display_offset: 0, - columns, + panels, } } @@ -227,7 +227,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> { write!(self.writer, "{}", l).ok(); } - for _ in 0..self.columns - 1 { + for _ in 0..self.panels - 1 { write!(self.writer, "{h25}{c}", h25 = h25, c = c).ok(); } if self.show_char_panel { @@ -237,7 +237,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> { } if self.show_char_panel { - for _ in 0..self.columns - 1 { + for _ in 0..self.panels - 1 { write!(self.writer, "{h8}{c}", h8 = h8, c = c).ok(); } writeln!(self.writer, "{h8}{r}", h8 = h8, r = r).ok(); @@ -301,16 +301,16 @@ impl<'a, Writer: Write> Printer<'a, Writer> { self.byte_char_panel[b as usize] ); - if idx % 8 == 0 && idx % (u64::from(self.columns) * 8) != 0 { + if idx % 8 == 0 && idx % (u64::from(self.panels) * 8) != 0 { let _ = write!(&mut self.buffer_line, "{}", self.border_style.inner_sep()); } idx += 1; } - if len < usize::from(8 * self.columns) { + if len < usize::from(8 * self.panels) { let _ = write!(&mut self.buffer_line, "{0:1$}", "", 8 - len % 8); - for _ in 0..(usize::from(8 * self.columns) - (len + (8 - len % 8))) / 8 { + for _ in 0..(usize::from(8 * self.panels) - (len + (8 - len % 8))) / 8 { let _ = write!( &mut self.buffer_line, "{2}{0:1$}", @@ -324,7 +324,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> { } pub fn print_byte(&mut self, b: u8) -> io::Result<()> { - if self.idx % (u64::from(self.columns) * 8) == 1 { + if self.idx % (u64::from(self.panels) * 8) == 1 { self.print_header(); self.print_position_panel(); } @@ -334,7 +334,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> { self.squeezer.process(b, self.idx); - if self.idx % (u64::from(self.columns) * 8) == 0 { + if self.idx % (u64::from(self.panels) * 8) == 0 { self.print_textline()?; } else if self.idx % 8 == 0 { let _ = write!(&mut self.buffer_line, "{} ", self.border_style.inner_sep()); @@ -352,7 +352,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> { if self.squeezer.active() { self.print_position_panel(); write!(&mut self.buffer_line, "{0:1$}", "", 24)?; - for _ in 0..self.columns - 1 { + for _ in 0..self.panels - 1 { write!( &mut self.buffer_line, "{2}{0:1$}", @@ -368,7 +368,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> { 8, self.border_style.outer_sep() )?; - for _ in 0..self.columns - 1 { + for _ in 0..self.panels - 1 { write!( &mut self.buffer_line, "{2}{0:1$}", @@ -387,9 +387,9 @@ impl<'a, Writer: Write> Printer<'a, Writer> { // print empty space on last line if squeeze_action != SqueezeAction::Delete { - if len < usize::from(8 * self.columns) { + if len < usize::from(8 * self.panels) { write!(&mut self.buffer_line, "{0:1$}", "", 3 * (8 - len % 8))?; - for _ in 0..(usize::from(8 * self.columns) - (len + (8 - len % 8))) / 8 { + for _ in 0..(usize::from(8 * self.panels) - (len + (8 - len % 8))) / 8 { write!( &mut self.buffer_line, "{2}{0:1$}", @@ -422,18 +422,18 @@ impl<'a, Writer: Write> Printer<'a, Writer> { self.border_style.outer_sep() )?; - for i in 0..self.columns { + for i in 0..self.panels { write!(&mut self.buffer_line, "{0:1$}", "", 25)?; - if i != self.columns - 1 { + if i != self.panels - 1 { write!(&mut self.buffer_line, "{}", self.border_style.inner_sep())?; } else { write!(&mut self.buffer_line, "{}", self.border_style.outer_sep())?; } } - for i in 0..self.columns { + for i in 0..self.panels { write!(&mut self.buffer_line, "{0:1$}", "", 8)?; - if i != self.columns - 1 { + if i != self.panels - 1 { write!(&mut self.buffer_line, "{}", self.border_style.inner_sep())?; } else { writeln!(&mut self.buffer_line, "{}", self.border_style.outer_sep())?; @@ -585,7 +585,7 @@ mod tests { } #[test] - fn multiple_columns() { + fn multiple_panels() { let input = io::Cursor::new(b"supercalifragilisticexpialidocioussupercalifragilisticexpialidocioussupercalifragilisticexpialidocious"); let expected_string = "\ ┌────────┬─────────────────────────┬─────────────────────────┬─────────────────────────┬─────────────────────────┬────────┬────────┬────────┬────────┐