mirror of
https://github.com/sharkdp/hexyl.git
synced 2026-10-26 20:16:34 +00:00
Merge pull request #235 from sahinfalcon/print-colour-table
PR #229 • Add option to print color table
This commit is contained in:
2 files changed
+57
-4
No files matched your search
+6
-1
@@ -1,9 +1,14 @@
|
||||
# unreleased
|
||||
# unreleased
|
||||
|
||||
## Features
|
||||
|
||||
* New `--print-color-table` option, see #229 (@sahinfalcon)
|
||||
|
||||
## Bugfixes
|
||||
|
||||
- Throw an error when try to view a directory, see #234 (@Integral-Tech)
|
||||
|
||||
|
||||
# v0.15.0
|
||||
|
||||
## Features
|
||||
|
||||
+51
-3
@@ -16,6 +16,11 @@ use terminal_size::terminal_size;
|
||||
|
||||
use hexyl::{Base, BorderStyle, CharacterTable, Endianness, Input, PrinterBuilder};
|
||||
|
||||
use hexyl::{
|
||||
COLOR_ASCII_OTHER, COLOR_ASCII_PRINTABLE, COLOR_ASCII_WHITESPACE, COLOR_NONASCII, COLOR_NULL,
|
||||
COLOR_RESET,
|
||||
};
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
||||
@@ -179,6 +184,10 @@ struct Opt {
|
||||
conflicts_with("panels")
|
||||
)]
|
||||
terminal_width: Option<NonZeroU64>,
|
||||
|
||||
/// Print a table showing how different types of bytes are colored.
|
||||
#[arg(long)]
|
||||
print_color_table: bool,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Default, ValueEnum)]
|
||||
@@ -231,6 +240,10 @@ impl From<GroupSize> for u8 {
|
||||
fn run() -> Result<()> {
|
||||
let opt = Opt::parse();
|
||||
|
||||
if opt.print_color_table {
|
||||
return print_color_table().map_err(|e| anyhow!(e));
|
||||
}
|
||||
|
||||
let stdin = io::stdin();
|
||||
|
||||
let mut reader = match opt.file {
|
||||
@@ -416,10 +429,9 @@ fn run() -> Result<()> {
|
||||
|
||||
let character_table = opt.character_table;
|
||||
|
||||
let stdout = io::stdout();
|
||||
let mut stdout_lock = BufWriter::new(stdout.lock());
|
||||
let mut stdout = BufWriter::new(io::stdout().lock());
|
||||
|
||||
let mut printer = PrinterBuilder::new(&mut stdout_lock)
|
||||
let mut printer = PrinterBuilder::new(&mut stdout)
|
||||
.show_color(show_color)
|
||||
.show_char_panel(show_char_panel)
|
||||
.show_position_panel(show_position_panel)
|
||||
@@ -475,6 +487,42 @@ impl From<NonNegativeI64> for u64 {
|
||||
}
|
||||
}
|
||||
|
||||
fn print_color_table() -> io::Result<()> {
|
||||
let mut stdout = BufWriter::new(io::stdout().lock());
|
||||
|
||||
writeln!(stdout, "hexyl color reference:\n")?;
|
||||
|
||||
// NULL bytes
|
||||
stdout.write_all(COLOR_NULL)?;
|
||||
writeln!(stdout, "⋄ NULL bytes (0x00)")?;
|
||||
stdout.write_all(COLOR_RESET)?;
|
||||
|
||||
// ASCII printable
|
||||
stdout.write_all(COLOR_ASCII_PRINTABLE)?;
|
||||
writeln!(stdout, "a ASCII printable characters (0x20 - 0x7E)")?;
|
||||
stdout.write_all(COLOR_RESET)?;
|
||||
|
||||
// ASCII whitespace
|
||||
stdout.write_all(COLOR_ASCII_WHITESPACE)?;
|
||||
writeln!(stdout, "_ ASCII whitespace (0x09 - 0x0D, 0x20)")?;
|
||||
stdout.write_all(COLOR_RESET)?;
|
||||
|
||||
// ASCII other
|
||||
stdout.write_all(COLOR_ASCII_OTHER)?;
|
||||
writeln!(
|
||||
stdout,
|
||||
"• ASCII control characters (except NULL and whitespace)"
|
||||
)?;
|
||||
stdout.write_all(COLOR_RESET)?;
|
||||
|
||||
// Non-ASCII
|
||||
stdout.write_all(COLOR_NONASCII)?;
|
||||
writeln!(stdout, "× Non-ASCII bytes (0x80 - 0xFF)")?;
|
||||
stdout.write_all(COLOR_RESET)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Default, Hash, Eq, Ord, PartialEq, PartialOrd)]
|
||||
pub struct PositiveI64(i64);
|
||||
|
||||
|
||||
Reference in new issue
Block a user