table -> panel

This commit is contained in:
Mikhail Katychev authored and David Peter committed 2022-05-22 21:34:26 +02:00
1 parent f15e049bf5
commit 6873867658
4 files changed
+50 -50

No files matched your search

+4 -4
View File
@@ -12,16 +12,16 @@ fn main() {
let mut handle = stdout.lock(); let mut handle = stdout.lock();
let show_color = true; let show_color = true;
let show_char_table = true; let show_char_panel = true;
let show_position_indicator = true; let show_position_panel = true;
let use_squeezing = false; let use_squeezing = false;
let border_style = BorderStyle::Unicode; let border_style = BorderStyle::Unicode;
let mut printer = Printer::new( let mut printer = Printer::new(
&mut handle, &mut handle,
show_color, show_color,
show_char_table, show_char_panel,
show_position_indicator, show_position_panel,
border_style, border_style,
use_squeezing, use_squeezing,
); );
+9 -10
View File
@@ -112,7 +112,7 @@ fn run() -> Result<(), AnyhowError> {
), ),
) )
.arg(Arg::with_name("plain").short("p").long("plain").help( .arg(Arg::with_name("plain").short("p").long("plain").help(
"Display output with --no-character-table, --no-position-table, --border=none, and --color=never.", "Display output with --no-characters, --no-position, --border=none, and --color=never.",
)) ))
.arg( .arg(
Arg::with_name("border") Arg::with_name("border")
@@ -130,14 +130,14 @@ fn run() -> Result<(), AnyhowError> {
.arg( .arg(
Arg::with_name("no_chars") Arg::with_name("no_chars")
.short("C") .short("C")
.long("no-charcter-table") .long("no-characters")
.help("Whether to display the character table on the right."), .help("Whether to display the character panel on the right."),
) )
.arg( .arg(
Arg::with_name("no_position") Arg::with_name("no_position")
.short("P") .short("P")
.long("no-position-table") .long("no-position")
.help("Whether to display the position indicator on the left."), .help("Whether to display the position panel on the left."),
) )
.arg( .arg(
Arg::with_name("display_offset") Arg::with_name("display_offset")
@@ -254,10 +254,9 @@ fn run() -> Result<(), AnyhowError> {
let squeeze = !matches.is_present("nosqueezing"); let squeeze = !matches.is_present("nosqueezing");
let show_char_table = !matches.is_present("no_chars") && !matches.is_present("plain"); let show_char_panel = !matches.is_present("no_chars") && !matches.is_present("plain");
let show_position_indicator = let show_position_panel = !matches.is_present("no_position") && !matches.is_present("plain");
!matches.is_present("no_position") && !matches.is_present("plain");
let display_offset: u64 = matches let display_offset: u64 = matches
.value_of("display_offset") .value_of("display_offset")
@@ -276,8 +275,8 @@ fn run() -> Result<(), AnyhowError> {
let mut printer = Printer::new( let mut printer = Printer::new(
&mut stdout_lock, &mut stdout_lock,
show_color, show_color,
show_char_table, show_char_panel,
show_position_indicator, show_position_panel,
border_style, border_style,
squeeze, squeeze,
); );
+35 -34
View File
@@ -146,12 +146,12 @@ pub struct Printer<'a, Writer: Write> {
buffer_line: Vec<u8>, buffer_line: Vec<u8>,
writer: &'a mut Writer, writer: &'a mut Writer,
show_color: bool, show_color: bool,
show_char_table: bool, show_char_panel: bool,
show_position_indicator: bool, show_position_panel: bool,
border_style: BorderStyle, border_style: BorderStyle,
header_was_printed: bool, header_was_printed: bool,
byte_hex_table: Vec<String>, byte_hex_panel: Vec<String>,
byte_char_table: Vec<String>, byte_char_panel: Vec<String>,
squeezer: Squeezer, squeezer: Squeezer,
display_offset: u64, display_offset: u64,
} }
@@ -160,8 +160,8 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
pub fn new( pub fn new(
writer: &'a mut Writer, writer: &'a mut Writer,
show_color: bool, show_color: bool,
show_char_table: bool, show_char_panel: bool,
show_position_indicator: bool, show_position_panel: bool,
border_style: BorderStyle, border_style: BorderStyle,
use_squeeze: bool, use_squeeze: bool,
) -> Printer<'a, Writer> { ) -> Printer<'a, Writer> {
@@ -171,11 +171,11 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
buffer_line: vec![], buffer_line: vec![],
writer, writer,
show_color, show_color,
show_char_table, show_char_panel,
show_position_indicator, show_position_panel,
border_style, border_style,
header_was_printed: false, header_was_printed: false,
byte_hex_table: (0u8..=u8::max_value()) byte_hex_panel: (0u8..=u8::max_value())
.map(|i| { .map(|i| {
let byte_hex = format!("{:02x} ", i); let byte_hex = format!("{:02x} ", i);
if show_color { if show_color {
@@ -185,7 +185,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
} }
}) })
.collect(), .collect(),
byte_char_table: show_char_table byte_char_panel: show_char_panel
.then(|| { .then(|| {
(0u8..=u8::max_value()) (0u8..=u8::max_value())
.map(|i| { .map(|i| {
@@ -217,7 +217,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
let h8 = h.to_string().repeat(8); let h8 = h.to_string().repeat(8);
let h25 = h.to_string().repeat(25); let h25 = h.to_string().repeat(25);
if self.show_position_indicator { if self.show_position_panel {
write!(self.writer, "{l}{h8}{c}", l = l, c = c, h8 = h8).ok(); write!(self.writer, "{l}{h8}{c}", l = l, c = c, h8 = h8).ok();
} else { } else {
write!(self.writer, "{}", l).ok(); write!(self.writer, "{}", l).ok();
@@ -225,31 +225,31 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
write!(self.writer, "{h25}{c}{h25}", c = c, h25 = h25).ok(); write!(self.writer, "{h25}{c}{h25}", c = c, h25 = h25).ok();
if self.show_char_table { if self.show_char_panel {
writeln!(self.writer, "{c}{h8}{c}{h8}{r}", c = c, h8 = h8, r = r).ok(); writeln!(self.writer, "{c}{h8}{c}{h8}{r}", c = c, h8 = h8, r = r).ok();
} else { } else {
writeln!(self.writer, "{r}", r = r).ok(); writeln!(self.writer, "{r}", r = r).ok();
} }
} }
pub fn header(&mut self) { pub fn print_header(&mut self) {
if self.header_was_printed {
return;
}
if let Some(e) = self.border_style.header_elems() { if let Some(e) = self.border_style.header_elems() {
self.write_border(e) self.write_border(e)
} }
self.header_was_printed = true;
} }
pub fn footer(&mut self) { pub fn print_footer(&mut self) {
if let Some(e) = self.border_style.footer_elems() { if let Some(e) = self.border_style.footer_elems() {
self.write_border(e) self.write_border(e)
} }
} }
fn print_position_indicator(&mut self) { fn print_position_panel(&mut self) {
if !self.header_was_printed { if !self.show_position_panel {
self.header();
self.header_was_printed = true;
}
if !self.show_position_indicator {
write!(&mut self.buffer_line, "{} ", self.border_style.outer_sep()).ok(); write!(&mut self.buffer_line, "{} ", self.border_style.outer_sep()).ok();
return; return;
} }
@@ -270,21 +270,21 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
); );
} }
pub fn print_char_table(&mut self) { pub fn print_char_panel(&mut self) {
let len = self.raw_line.len(); if !self.show_char_panel {
// just write newline if character panel is hidden
if !self.show_char_table {
// just write newline if character table is hidden
writeln!(&mut self.buffer_line).ok(); writeln!(&mut self.buffer_line).ok();
return; return;
} }
let len = self.raw_line.len();
let mut idx = 1; let mut idx = 1;
for &b in self.raw_line.iter() { for &b in self.raw_line.iter() {
let _ = write!( let _ = write!(
&mut self.buffer_line, &mut self.buffer_line,
"{}", "{}",
self.byte_char_table[b as usize] self.byte_char_panel[b as usize]
); );
if idx == 8 { if idx == 8 {
@@ -317,10 +317,11 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
pub fn print_byte(&mut self, b: u8) -> io::Result<()> { pub fn print_byte(&mut self, b: u8) -> io::Result<()> {
if self.idx % 16 == 1 { if self.idx % 16 == 1 {
self.print_position_indicator(); self.print_header();
self.print_position_panel();
} }
write!(&mut self.buffer_line, "{}", self.byte_hex_table[b as usize])?; write!(&mut self.buffer_line, "{}", self.byte_hex_panel[b as usize])?;
self.raw_line.push(b); self.raw_line.push(b);
self.squeezer.process(b, self.idx); self.squeezer.process(b, self.idx);
@@ -345,7 +346,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
if len == 0 { if len == 0 {
if self.squeezer.active() { if self.squeezer.active() {
self.print_position_indicator(); self.print_position_panel();
let _ = writeln!( let _ = writeln!(
&mut self.buffer_line, &mut self.buffer_line,
"{0:1$}{4}{0:2$}{5}{0:3$}{4}{0:3$}{5}", "{0:1$}{4}{0:2$}{5}{0:3$}{4}{0:3$}{5}",
@@ -385,7 +386,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
} }
} }
self.print_char_table(); self.print_char_panel();
match squeeze_action { match squeeze_action {
SqueezeAction::Print => { SqueezeAction::Print => {
@@ -453,8 +454,8 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
self.print_textline().ok(); self.print_textline().ok();
if !self.header_was_printed() { if !self.header_was_printed() {
self.header(); self.print_header();
if self.show_position_indicator { if self.show_position_panel {
write!(self.writer, "{0:9}", "│").ok(); write!(self.writer, "{0:9}", "│").ok();
} }
write!( write!(
@@ -463,12 +464,12 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
"│", "No content to print" "│", "No content to print"
) )
.ok(); .ok();
if self.show_char_table { if self.show_char_panel {
write!(self.writer, "{0:>9}{0:>9}", "│").ok(); write!(self.writer, "{0:>9}{0:>9}", "│").ok();
} }
writeln!(self.writer).ok(); writeln!(self.writer).ok();
} }
self.footer(); self.print_footer();
Ok(()) Ok(())
} }
+2 -2
View File
@@ -245,7 +245,7 @@ mod display_settings {
fn no_chars() { fn no_chars() {
hexyl() hexyl()
.arg("ascii") .arg("ascii")
.arg("--no-charcter-table") .arg("--no-characters")
.arg("--color=never") .arg("--color=never")
.assert() .assert()
.success() .success()
@@ -260,7 +260,7 @@ mod display_settings {
fn no_position() { fn no_position() {
hexyl() hexyl()
.arg("ascii") .arg("ascii")
.arg("--no-position-table") .arg("--no-position")
.arg("--color=never") .arg("--color=never")
.assert() .assert()
.success() .success()