mirror of
https://github.com/sharkdp/hexyl.git
synced 2026-10-30 09:05:54 +00:00
Use separate struct for border elements
This commit is contained in:
1 parent
7cc0b51537
commit
3a62809c8c
1 file changed
+45
-20
+45
-20
@@ -80,6 +80,13 @@ impl Byte {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct BorderElements {
|
||||||
|
left_corner: char,
|
||||||
|
horizontal_line: char,
|
||||||
|
column_separator: char,
|
||||||
|
right_corner: char,
|
||||||
|
}
|
||||||
|
|
||||||
enum BorderStyle {
|
enum BorderStyle {
|
||||||
Unicode,
|
Unicode,
|
||||||
Ascii,
|
Ascii,
|
||||||
@@ -87,23 +94,39 @@ enum BorderStyle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl BorderStyle {
|
impl BorderStyle {
|
||||||
/// returns, in order, the left corner, horizontal line, column
|
fn header_elems(&self) -> Option<BorderElements> {
|
||||||
/// separator and right corner for the header
|
|
||||||
fn header_elems(&self) -> Option<(char, char, char, char)> {
|
|
||||||
match self {
|
match self {
|
||||||
BorderStyle::Unicode => Some(('┌', '─', '┬', '┐')),
|
BorderStyle::Unicode => Some(BorderElements {
|
||||||
BorderStyle::Ascii => Some(('+', '-', '+', '+')),
|
left_corner: '┌',
|
||||||
BorderStyle::None => None,
|
horizontal_line: '─',
|
||||||
|
column_separator: '┬',
|
||||||
|
right_corner: '┐',
|
||||||
|
}),
|
||||||
|
BorderStyle::Ascii => Some(BorderElements {
|
||||||
|
left_corner: '+',
|
||||||
|
horizontal_line: '-',
|
||||||
|
column_separator: '+',
|
||||||
|
right_corner: '+',
|
||||||
|
}),
|
||||||
|
BorderStyle::None => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// returns, in order, the left corner, horizontal line, column
|
fn footer_elems(&self) -> Option<BorderElements> {
|
||||||
/// separator and right corner for the footer
|
|
||||||
fn footer_elems(&self) -> Option<(char, char, char, char)> {
|
|
||||||
match self {
|
match self {
|
||||||
BorderStyle::Unicode => Some(('└', '─', '┴', '┘')),
|
BorderStyle::Unicode => Some(BorderElements {
|
||||||
BorderStyle::Ascii => Some(('+', '-', '+', '+')),
|
left_corner: '└',
|
||||||
BorderStyle::None => None,
|
horizontal_line: '─',
|
||||||
|
column_separator: '┴',
|
||||||
|
right_corner: '┘',
|
||||||
|
}),
|
||||||
|
BorderStyle::Ascii => Some(BorderElements {
|
||||||
|
left_corner: '+',
|
||||||
|
horizontal_line: '-',
|
||||||
|
column_separator: '+',
|
||||||
|
right_corner: '+',
|
||||||
|
}),
|
||||||
|
BorderStyle::None => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,16 +195,17 @@ impl<'a> Printer<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn header(&mut self) {
|
fn header(&mut self) {
|
||||||
if let Some((l,h,c,r)) = self.border_style.header_elems() {
|
if let Some(border_elements) = self.border_style.header_elems() {
|
||||||
|
let h = border_elements.horizontal_line;
|
||||||
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);
|
||||||
|
|
||||||
writeln!(
|
writeln!(
|
||||||
self.stdout,
|
self.stdout,
|
||||||
"{l}{h8}{c}{h25}{c}{h25}{c}{h8}{c}{h8}{r}",
|
"{l}{h8}{c}{h25}{c}{h25}{c}{h8}{c}{h8}{r}",
|
||||||
l = l,
|
l = border_elements.left_corner,
|
||||||
c = c,
|
c = border_elements.column_separator,
|
||||||
r = r,
|
r = border_elements.right_corner,
|
||||||
h8 = h8,
|
h8 = h8,
|
||||||
h25 = h25
|
h25 = h25
|
||||||
)
|
)
|
||||||
@@ -190,16 +214,17 @@ impl<'a> Printer<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn footer(&mut self) {
|
fn footer(&mut self) {
|
||||||
if let Some((l,h,c,r)) = self.border_style.footer_elems() {
|
if let Some(border_elements) = self.border_style.footer_elems() {
|
||||||
|
let h = border_elements.horizontal_line;
|
||||||
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);
|
||||||
|
|
||||||
writeln!(
|
writeln!(
|
||||||
self.stdout,
|
self.stdout,
|
||||||
"{l}{h8}{c}{h25}{c}{h25}{c}{h8}{c}{h8}{r}",
|
"{l}{h8}{c}{h25}{c}{h25}{c}{h8}{c}{h8}{r}",
|
||||||
l = l,
|
l = border_elements.left_corner,
|
||||||
c = c,
|
c = border_elements.column_separator,
|
||||||
r = r,
|
r = border_elements.right_corner,
|
||||||
h8 = h8,
|
h8 = h8,
|
||||||
h25 = h25
|
h25 = h25
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in new issue
Block a user