mirror of
https://github.com/sharkdp/hexyl.git
synced 2026-10-28 08:05:52 +00:00
Only print to buffer if line is not squeezed
This commit is contained in:
1 parent
53110bac6f
commit
161ddd7ea1
2 files changed
+85
-55
No files matched your search
+57
-51
@@ -309,62 +309,66 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
|
|||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
if len < 8 {
|
let squeeze_action = self.squeezer.action();
|
||||||
let _ = write!(
|
|
||||||
&mut self.buffer_line,
|
|
||||||
"{0:1$}{3}{0:2$}{4}",
|
|
||||||
"",
|
|
||||||
3 * (8 - len),
|
|
||||||
1 + 3 * 8,
|
|
||||||
self.border_style.inner_sep(),
|
|
||||||
self.border_style.outer_sep(),
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
let _ = write!(
|
|
||||||
&mut self.buffer_line,
|
|
||||||
"{0:1$}{2}",
|
|
||||||
"",
|
|
||||||
3 * (16 - len),
|
|
||||||
self.border_style.outer_sep()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut idx = 1;
|
if squeeze_action != SqueezeAction::Delete {
|
||||||
for &b in self.raw_line.iter() {
|
if len < 8 {
|
||||||
let _ = write!(
|
let _ = write!(
|
||||||
&mut self.buffer_line,
|
&mut self.buffer_line,
|
||||||
"{}",
|
"{0:1$}{3}{0:2$}{4}",
|
||||||
self.byte_char_table[b as usize]
|
"",
|
||||||
);
|
3 * (8 - len),
|
||||||
|
1 + 3 * 8,
|
||||||
if idx == 8 {
|
self.border_style.inner_sep(),
|
||||||
let _ = write!(&mut self.buffer_line, "{}", self.border_style.inner_sep());
|
self.border_style.outer_sep(),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
let _ = write!(
|
||||||
|
&mut self.buffer_line,
|
||||||
|
"{0:1$}{2}",
|
||||||
|
"",
|
||||||
|
3 * (16 - len),
|
||||||
|
self.border_style.outer_sep()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
idx += 1;
|
let mut idx = 1;
|
||||||
|
for &b in self.raw_line.iter() {
|
||||||
|
let _ = write!(
|
||||||
|
&mut self.buffer_line,
|
||||||
|
"{}",
|
||||||
|
self.byte_char_table[b as usize]
|
||||||
|
);
|
||||||
|
|
||||||
|
if idx == 8 {
|
||||||
|
let _ = write!(&mut self.buffer_line, "{}", self.border_style.inner_sep());
|
||||||
|
}
|
||||||
|
|
||||||
|
idx += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if len < 8 {
|
||||||
|
let _ = writeln!(
|
||||||
|
&mut self.buffer_line,
|
||||||
|
"{0:1$}{3}{0:2$}{4}",
|
||||||
|
"",
|
||||||
|
8 - len,
|
||||||
|
8,
|
||||||
|
self.border_style.inner_sep(),
|
||||||
|
self.border_style.outer_sep(),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
let _ = writeln!(
|
||||||
|
&mut self.buffer_line,
|
||||||
|
"{0:1$}{2}",
|
||||||
|
"",
|
||||||
|
16 - len,
|
||||||
|
self.border_style.outer_sep()
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len < 8 {
|
match squeeze_action {
|
||||||
let _ = writeln!(
|
|
||||||
&mut self.buffer_line,
|
|
||||||
"{0:1$}{3}{0:2$}{4}",
|
|
||||||
"",
|
|
||||||
8 - len,
|
|
||||||
8,
|
|
||||||
self.border_style.inner_sep(),
|
|
||||||
self.border_style.outer_sep(),
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
let _ = writeln!(
|
|
||||||
&mut self.buffer_line,
|
|
||||||
"{0:1$}{2}",
|
|
||||||
"",
|
|
||||||
16 - len,
|
|
||||||
self.border_style.outer_sep()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
match self.squeezer.action() {
|
|
||||||
SqueezeAction::Print => {
|
SqueezeAction::Print => {
|
||||||
self.buffer_line.clear();
|
self.buffer_line.clear();
|
||||||
let style = COLOR_OFFSET.normal();
|
let style = COLOR_OFFSET.normal();
|
||||||
@@ -394,6 +398,8 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
|
|||||||
self.raw_line.clear();
|
self.raw_line.clear();
|
||||||
self.buffer_line.clear();
|
self.buffer_line.clear();
|
||||||
|
|
||||||
|
self.squeezer.advance();
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+28
-4
@@ -86,17 +86,23 @@ impl Squeezer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn action(&mut self) -> SqueezeAction {
|
pub fn action(&self) -> SqueezeAction {
|
||||||
|
match self.state {
|
||||||
|
SqueezeState::SqueezeFirstLine => SqueezeAction::Print,
|
||||||
|
SqueezeState::Squeeze => SqueezeAction::Delete,
|
||||||
|
_ => SqueezeAction::Ignore,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn advance(&mut self) {
|
||||||
match self.state {
|
match self.state {
|
||||||
SqueezeState::SqueezeFirstLine => {
|
SqueezeState::SqueezeFirstLine => {
|
||||||
self.state = SqueezeState::SqueezeActive;
|
self.state = SqueezeState::SqueezeActive;
|
||||||
SqueezeAction::Print
|
|
||||||
}
|
}
|
||||||
SqueezeState::Squeeze => {
|
SqueezeState::Squeeze => {
|
||||||
self.state = SqueezeState::SqueezeActive;
|
self.state = SqueezeState::SqueezeActive;
|
||||||
SqueezeAction::Delete
|
|
||||||
}
|
}
|
||||||
_ => SqueezeAction::Ignore,
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -112,6 +118,7 @@ mod tests {
|
|||||||
let mut s = Squeezer::new(true);
|
let mut s = Squeezer::new(true);
|
||||||
// just initialized
|
// just initialized
|
||||||
assert_eq!(s.action(), SqueezeAction::Ignore);
|
assert_eq!(s.action(), SqueezeAction::Ignore);
|
||||||
|
s.advance();
|
||||||
|
|
||||||
let exp = vec![
|
let exp = vec![
|
||||||
SqueezeAction::Ignore, // first line, print as is
|
SqueezeAction::Ignore, // first line, print as is
|
||||||
@@ -127,6 +134,7 @@ mod tests {
|
|||||||
idx += 1;
|
idx += 1;
|
||||||
}
|
}
|
||||||
let action = s.action();
|
let action = s.action();
|
||||||
|
s.advance();
|
||||||
assert_eq!(action, exp[line]);
|
assert_eq!(action, exp[line]);
|
||||||
line += 1;
|
line += 1;
|
||||||
}
|
}
|
||||||
@@ -139,6 +147,7 @@ mod tests {
|
|||||||
let mut s = Squeezer::new(true);
|
let mut s = Squeezer::new(true);
|
||||||
// just initialized
|
// just initialized
|
||||||
assert_eq!(s.action(), SqueezeAction::Ignore);
|
assert_eq!(s.action(), SqueezeAction::Ignore);
|
||||||
|
s.advance();
|
||||||
|
|
||||||
let exp = vec![
|
let exp = vec![
|
||||||
SqueezeAction::Ignore, // first line, print as is
|
SqueezeAction::Ignore, // first line, print as is
|
||||||
@@ -155,6 +164,7 @@ mod tests {
|
|||||||
idx += 1;
|
idx += 1;
|
||||||
}
|
}
|
||||||
assert_eq!(s.action(), exp[line]);
|
assert_eq!(s.action(), exp[line]);
|
||||||
|
s.advance();
|
||||||
line += 1;
|
line += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -170,6 +180,7 @@ mod tests {
|
|||||||
let mut s = Squeezer::new(true);
|
let mut s = Squeezer::new(true);
|
||||||
// just initialized
|
// just initialized
|
||||||
assert_eq!(s.action(), SqueezeAction::Ignore);
|
assert_eq!(s.action(), SqueezeAction::Ignore);
|
||||||
|
s.advance();
|
||||||
|
|
||||||
let exp = vec![
|
let exp = vec![
|
||||||
SqueezeAction::Ignore, // first line, print as is
|
SqueezeAction::Ignore, // first line, print as is
|
||||||
@@ -186,6 +197,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
let action = s.action();
|
let action = s.action();
|
||||||
assert_eq!(action, exp[line]);
|
assert_eq!(action, exp[line]);
|
||||||
|
s.advance();
|
||||||
line += 1;
|
line += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -201,6 +213,7 @@ mod tests {
|
|||||||
let mut s = Squeezer::new(true);
|
let mut s = Squeezer::new(true);
|
||||||
// just initialized
|
// just initialized
|
||||||
assert_eq!(s.action(), SqueezeAction::Ignore);
|
assert_eq!(s.action(), SqueezeAction::Ignore);
|
||||||
|
s.advance();
|
||||||
|
|
||||||
let exp = vec![
|
let exp = vec![
|
||||||
SqueezeAction::Ignore, // first line, print as is
|
SqueezeAction::Ignore, // first line, print as is
|
||||||
@@ -216,6 +229,7 @@ mod tests {
|
|||||||
idx += 1;
|
idx += 1;
|
||||||
}
|
}
|
||||||
let action = s.action();
|
let action = s.action();
|
||||||
|
s.advance();
|
||||||
assert_eq!(action, exp[line]);
|
assert_eq!(action, exp[line]);
|
||||||
line += 1;
|
line += 1;
|
||||||
}
|
}
|
||||||
@@ -232,6 +246,7 @@ mod tests {
|
|||||||
let mut s = Squeezer::new(true);
|
let mut s = Squeezer::new(true);
|
||||||
// just initialized
|
// just initialized
|
||||||
assert_eq!(s.action(), SqueezeAction::Ignore);
|
assert_eq!(s.action(), SqueezeAction::Ignore);
|
||||||
|
s.advance();
|
||||||
|
|
||||||
let exp = vec![
|
let exp = vec![
|
||||||
SqueezeAction::Ignore, // first line, print as is
|
SqueezeAction::Ignore, // first line, print as is
|
||||||
@@ -246,6 +261,7 @@ mod tests {
|
|||||||
idx += 1;
|
idx += 1;
|
||||||
}
|
}
|
||||||
let action = s.action();
|
let action = s.action();
|
||||||
|
s.advance();
|
||||||
assert_eq!(action, exp[line]);
|
assert_eq!(action, exp[line]);
|
||||||
line += 1;
|
line += 1;
|
||||||
}
|
}
|
||||||
@@ -265,6 +281,7 @@ mod tests {
|
|||||||
let mut s = Squeezer::new(true);
|
let mut s = Squeezer::new(true);
|
||||||
// just initialized
|
// just initialized
|
||||||
assert_eq!(s.action(), SqueezeAction::Ignore);
|
assert_eq!(s.action(), SqueezeAction::Ignore);
|
||||||
|
s.advance();
|
||||||
|
|
||||||
let exp = vec![
|
let exp = vec![
|
||||||
SqueezeAction::Ignore, // first line, print as is
|
SqueezeAction::Ignore, // first line, print as is
|
||||||
@@ -280,6 +297,7 @@ mod tests {
|
|||||||
idx += 1;
|
idx += 1;
|
||||||
}
|
}
|
||||||
let action = s.action();
|
let action = s.action();
|
||||||
|
s.advance();
|
||||||
assert_eq!(action, exp[line]);
|
assert_eq!(action, exp[line]);
|
||||||
line += 1;
|
line += 1;
|
||||||
}
|
}
|
||||||
@@ -304,6 +322,7 @@ mod tests {
|
|||||||
let mut s = Squeezer::new(true);
|
let mut s = Squeezer::new(true);
|
||||||
// just initialized
|
// just initialized
|
||||||
assert_eq!(s.action(), SqueezeAction::Ignore);
|
assert_eq!(s.action(), SqueezeAction::Ignore);
|
||||||
|
s.advance();
|
||||||
|
|
||||||
let exp = vec![
|
let exp = vec![
|
||||||
SqueezeAction::Ignore,
|
SqueezeAction::Ignore,
|
||||||
@@ -328,6 +347,7 @@ mod tests {
|
|||||||
idx += 1;
|
idx += 1;
|
||||||
}
|
}
|
||||||
let action = s.action();
|
let action = s.action();
|
||||||
|
s.advance();
|
||||||
assert_eq!(action, exp[line]);
|
assert_eq!(action, exp[line]);
|
||||||
line += 1;
|
line += 1;
|
||||||
}
|
}
|
||||||
@@ -346,6 +366,7 @@ mod tests {
|
|||||||
let mut s = Squeezer::new(true);
|
let mut s = Squeezer::new(true);
|
||||||
// just initialized
|
// just initialized
|
||||||
assert_eq!(s.action(), SqueezeAction::Ignore);
|
assert_eq!(s.action(), SqueezeAction::Ignore);
|
||||||
|
s.advance();
|
||||||
|
|
||||||
let exp = vec![
|
let exp = vec![
|
||||||
SqueezeAction::Ignore, // print as is
|
SqueezeAction::Ignore, // print as is
|
||||||
@@ -362,6 +383,7 @@ mod tests {
|
|||||||
idx += 1;
|
idx += 1;
|
||||||
}
|
}
|
||||||
assert_eq!(s.action(), exp[line]);
|
assert_eq!(s.action(), exp[line]);
|
||||||
|
s.advance();
|
||||||
line += 1;
|
line += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -378,6 +400,7 @@ mod tests {
|
|||||||
let mut s = Squeezer::new(true);
|
let mut s = Squeezer::new(true);
|
||||||
// just initialized
|
// just initialized
|
||||||
assert_eq!(s.action(), SqueezeAction::Ignore);
|
assert_eq!(s.action(), SqueezeAction::Ignore);
|
||||||
|
s.advance();
|
||||||
|
|
||||||
let exp = vec![
|
let exp = vec![
|
||||||
SqueezeAction::Ignore, // print as is
|
SqueezeAction::Ignore, // print as is
|
||||||
@@ -393,6 +416,7 @@ mod tests {
|
|||||||
idx += 1;
|
idx += 1;
|
||||||
}
|
}
|
||||||
assert_eq!(s.action(), exp[line]);
|
assert_eq!(s.action(), exp[line]);
|
||||||
|
s.advance();
|
||||||
line += 1;
|
line += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user