Add -n/--length option

This commit is contained in:
sharkdp committed 2018-11-06 20:18:23 +01:00
1 parent 3b5aa124a3
commit 5cc9e0b602
1 file changed
+26 -5
+26 -5
View File
@@ -140,14 +140,16 @@ impl<'a> Printer<'a> {
} }
if len < 8 { if len < 8 {
write!(self.stdout, "{}┊{}│", " ".repeat(3 * (8 - len)), write!(
" ".repeat(1 + 3 * 8) self.stdout,
"{}┊{}│",
" ".repeat(3 * (8 - len)),
" ".repeat(1 + 3 * 8)
)?; )?;
} else { } else {
write!(self.stdout, "{}│", " ".repeat(3 * (16 - len)))?; write!(self.stdout, "{}│", " ".repeat(3 * (16 - len)))?;
} }
let mut idx = 1; let mut idx = 1;
for b in self.line.iter().map(|b| Byte(*b)) { for b in self.line.iter().map(|b| Byte(*b)) {
let chr = format!("{}", b.as_char()); let chr = format!("{}", b.as_char());
@@ -161,7 +163,12 @@ impl<'a> Printer<'a> {
} }
if len < 8 { if len < 8 {
writeln!(self.stdout, "{}┊{}│ ", " ".repeat(8 - len), " ".repeat(8))?; writeln!(
self.stdout,
"{}┊{}│ ",
" ".repeat(8 - len),
" ".repeat(8)
)?;
} else { } else {
writeln!(self.stdout, "{}│", " ".repeat(16 - len))?; writeln!(self.stdout, "{}│", " ".repeat(16 - len))?;
} }
@@ -180,7 +187,15 @@ fn run() -> io::Result<()> {
.setting(AppSettings::UnifiedHelpMessage) .setting(AppSettings::UnifiedHelpMessage)
.version(crate_version!()) .version(crate_version!())
.about(crate_description!()) .about(crate_description!())
.arg(Arg::with_name("file").help("File to display")); .arg(Arg::with_name("file").help("File to display"))
.arg(
Arg::with_name("length")
.short("n")
.long("length")
.takes_value(true)
.value_name("N")
.help("read only N bytes from the input"),
);
let matches = app.get_matches(); let matches = app.get_matches();
@@ -191,6 +206,12 @@ fn run() -> io::Result<()> {
None => Box::new(stdin.lock()), None => Box::new(stdin.lock()),
}; };
if let Some(length) = matches
.value_of("length")
.and_then(|n| n.parse::<u64>().ok())
{
reader = Box::new(reader.take(length));
}
let stdout = io::stdout(); let stdout = io::stdout();
let mut printer = Printer::new(stdout.lock()); let mut printer = Printer::new(stdout.lock());