Cleanup binary stream print a little (#637)

This commit is contained in:
JT 2022-01-01 21:42:15 +11:00 committed by GitHub
parent 7fa1ad010b
commit 4383b372f5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 4 deletions

View file

@ -7,6 +7,7 @@ fn main() {
width: 16,
group: 4,
chunk: 1,
address_offset: 0,
skip: Some(10),
// length: Some(5),
// length: None,

View file

@ -57,6 +57,8 @@ pub struct HexConfig {
pub group: usize,
/// Source bytes per chunk (word). 0 for single word.
pub chunk: usize,
/// Offset to start counting addresses from
pub address_offset: usize,
/// Bytes from 0 to skip
pub skip: Option<usize>,
/// Length to return
@ -73,6 +75,7 @@ impl Default for HexConfig {
width: 16,
group: 4,
chunk: 1,
address_offset: 0,
skip: None,
length: None,
}
@ -164,6 +167,8 @@ where
let skip = cfg.skip.unwrap_or(0);
let address_offset = cfg.address_offset;
let source_part_vec: Vec<u8> = source
.as_ref()
.iter()
@ -205,11 +210,11 @@ where
writer,
"{}{:08x}{}: ",
style.prefix(),
i * cfg.width + skip,
i * cfg.width + skip + address_offset,
style.suffix()
)?;
} else {
write!(writer, "{:08x}: ", i * cfg.width + skip,)?;
write!(writer, "{:08x}: ", i * cfg.width + skip + address_offset,)?;
}
}
for (i, x) in row.as_ref().iter().enumerate() {

View file

@ -635,11 +635,21 @@ fn print_pipeline_data(
return Ok(());
}
PipelineData::ByteStream(stream, _, _) => {
let mut address_offset = 0;
for v in stream {
let cfg = nu_pretty_hex::HexConfig {
title: false,
address_offset,
..Default::default()
};
let v = v?;
address_offset += v.len();
let s = if v.iter().all(|x| x.is_ascii()) {
format!("{}", String::from_utf8_lossy(&v?))
format!("{}", String::from_utf8_lossy(&v))
} else {
format!("{}\n", nu_pretty_hex::pretty_hex(&v?))
nu_pretty_hex::config_hex(&v, cfg)
};
println!("{}", s);
}