mirror of
https://github.com/nushell/nushell
synced 2024-12-28 05:53:09 +00:00
first stab at minimizing ansi escapes (#5822)
This commit is contained in:
parent
2caa44cea8
commit
9f07bcc66f
1 changed files with 23 additions and 92 deletions
|
@ -1,7 +1,7 @@
|
||||||
use crate::table_theme::TableTheme;
|
use crate::table_theme::TableTheme;
|
||||||
use crate::wrap::{column_width, split_sublines, wrap, Alignment, Subline, WrappedCell};
|
use crate::wrap::{column_width, split_sublines, wrap, Alignment, Subline, WrappedCell};
|
||||||
use crate::{StyledString, TextStyle};
|
use crate::{StyledString, TextStyle};
|
||||||
use nu_ansi_term::Style;
|
use nu_ansi_term::{AnsiString, AnsiStrings, Style};
|
||||||
use nu_protocol::{Config, FooterMode};
|
use nu_protocol::{Config, FooterMode};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::fmt::Write;
|
use std::fmt::Write;
|
||||||
|
@ -62,7 +62,7 @@ impl WrappedTable {
|
||||||
color_hm: &HashMap<String, Style>,
|
color_hm: &HashMap<String, Style>,
|
||||||
) -> String {
|
) -> String {
|
||||||
let column_count = self.column_widths.len();
|
let column_count = self.column_widths.len();
|
||||||
let mut output = String::new();
|
let mut output: Vec<AnsiString> = Vec::new();
|
||||||
let sep_color = color_hm
|
let sep_color = color_hm
|
||||||
.get("separator")
|
.get("separator")
|
||||||
.unwrap_or(&Style::default())
|
.unwrap_or(&Style::default())
|
||||||
|
@ -72,139 +72,70 @@ impl WrappedTable {
|
||||||
SeparatorPosition::Top => {
|
SeparatorPosition::Top => {
|
||||||
for column in self.column_widths.iter().enumerate() {
|
for column in self.column_widths.iter().enumerate() {
|
||||||
if column.0 == 0 && self.theme.print_left_border {
|
if column.0 == 0 && self.theme.print_left_border {
|
||||||
output.push_str(
|
output.push(sep_color.paint(self.theme.top_left.to_string()));
|
||||||
&sep_color
|
|
||||||
.paint(&self.theme.top_left.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _ in 0..*column.1 {
|
for _ in 0..*column.1 {
|
||||||
output.push_str(
|
output.push(sep_color.paint(self.theme.top_horizontal.to_string()));
|
||||||
&sep_color
|
|
||||||
.paint(&self.theme.top_horizontal.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
output.push_str(
|
output.push(sep_color.paint(self.theme.top_horizontal.to_string()));
|
||||||
&sep_color
|
output.push(sep_color.paint(self.theme.top_horizontal.to_string()));
|
||||||
.paint(&self.theme.top_horizontal.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
output.push_str(
|
|
||||||
&sep_color
|
|
||||||
.paint(&self.theme.top_horizontal.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
if column.0 == column_count - 1 {
|
if column.0 == column_count - 1 {
|
||||||
if self.theme.print_right_border {
|
if self.theme.print_right_border {
|
||||||
output.push_str(
|
output.push(sep_color.paint(self.theme.top_right.to_string()));
|
||||||
&sep_color
|
|
||||||
.paint(&self.theme.top_right.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
output.push_str(
|
output.push(sep_color.paint(self.theme.top_center.to_string()));
|
||||||
&sep_color
|
|
||||||
.paint(&self.theme.top_center.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
output.push('\n');
|
output.push(AnsiString::from("\n".to_string()));
|
||||||
}
|
}
|
||||||
SeparatorPosition::Middle => {
|
SeparatorPosition::Middle => {
|
||||||
for column in self.column_widths.iter().enumerate() {
|
for column in self.column_widths.iter().enumerate() {
|
||||||
if column.0 == 0 && self.theme.print_left_border {
|
if column.0 == 0 && self.theme.print_left_border {
|
||||||
output.push_str(
|
output.push(sep_color.paint(self.theme.middle_left.to_string()));
|
||||||
&sep_color
|
|
||||||
.paint(&self.theme.middle_left.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _ in 0..*column.1 {
|
for _ in 0..*column.1 {
|
||||||
output.push_str(
|
output.push(sep_color.paint(self.theme.middle_horizontal.to_string()));
|
||||||
&sep_color
|
|
||||||
.paint(&self.theme.middle_horizontal.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
output.push_str(
|
output.push(sep_color.paint(self.theme.middle_horizontal.to_string()));
|
||||||
&sep_color
|
output.push(sep_color.paint(self.theme.middle_horizontal.to_string()));
|
||||||
.paint(&self.theme.middle_horizontal.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
output.push_str(
|
|
||||||
&sep_color
|
|
||||||
.paint(&self.theme.middle_horizontal.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
|
|
||||||
if column.0 == column_count - 1 {
|
if column.0 == column_count - 1 {
|
||||||
if self.theme.print_right_border {
|
if self.theme.print_right_border {
|
||||||
output.push_str(
|
output.push(sep_color.paint(self.theme.middle_right.to_string()));
|
||||||
&sep_color
|
|
||||||
.paint(&self.theme.middle_right.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
output
|
output.push(sep_color.paint(self.theme.center.to_string()));
|
||||||
.push_str(&sep_color.paint(&self.theme.center.to_string()).to_string());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
output.push('\n');
|
output.push(AnsiString::from("\n".to_string()));
|
||||||
}
|
}
|
||||||
SeparatorPosition::Bottom => {
|
SeparatorPosition::Bottom => {
|
||||||
for column in self.column_widths.iter().enumerate() {
|
for column in self.column_widths.iter().enumerate() {
|
||||||
if column.0 == 0 && self.theme.print_left_border {
|
if column.0 == 0 && self.theme.print_left_border {
|
||||||
output.push_str(
|
output.push(sep_color.paint(self.theme.bottom_left.to_string()));
|
||||||
&sep_color
|
|
||||||
.paint(&self.theme.bottom_left.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
for _ in 0..*column.1 {
|
for _ in 0..*column.1 {
|
||||||
output.push_str(
|
output.push(sep_color.paint(self.theme.bottom_horizontal.to_string()));
|
||||||
&sep_color
|
|
||||||
.paint(&self.theme.bottom_horizontal.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
output.push_str(
|
output.push(sep_color.paint(self.theme.bottom_horizontal.to_string()));
|
||||||
&sep_color
|
output.push(sep_color.paint(self.theme.bottom_horizontal.to_string()));
|
||||||
.paint(&self.theme.bottom_horizontal.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
output.push_str(
|
|
||||||
&sep_color
|
|
||||||
.paint(&self.theme.bottom_horizontal.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
|
|
||||||
if column.0 == column_count - 1 {
|
if column.0 == column_count - 1 {
|
||||||
if self.theme.print_right_border {
|
if self.theme.print_right_border {
|
||||||
output.push_str(
|
output.push(sep_color.paint(self.theme.bottom_right.to_string()));
|
||||||
&sep_color
|
|
||||||
.paint(&self.theme.bottom_right.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
output.push_str(
|
output.push(sep_color.paint(self.theme.bottom_center.to_string()));
|
||||||
&sep_color
|
|
||||||
.paint(&self.theme.bottom_center.to_string())
|
|
||||||
.to_string(),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
output
|
AnsiStrings(&output[..]).to_string()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_cell_contents(
|
fn print_cell_contents(
|
||||||
|
|
Loading…
Reference in a new issue