forked from extern/nushell
optionally remove table output color (#455)
This commit is contained in:
parent
a7a213b3f2
commit
a8e5cb871e
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -1642,6 +1642,7 @@ name = "nu-table"
|
|||||||
version = "0.36.0"
|
version = "0.36.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ansi-cut",
|
"ansi-cut",
|
||||||
|
"atty",
|
||||||
"nu-ansi-term 0.39.0",
|
"nu-ansi-term 0.39.0",
|
||||||
"nu-protocol",
|
"nu-protocol",
|
||||||
"regex",
|
"regex",
|
||||||
|
@ -14,6 +14,7 @@ pub struct Config {
|
|||||||
pub footer_mode: FooterMode,
|
pub footer_mode: FooterMode,
|
||||||
pub animate_prompt: bool,
|
pub animate_prompt: bool,
|
||||||
pub float_precision: i64,
|
pub float_precision: i64,
|
||||||
|
pub without_color: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Config {
|
impl Default for Config {
|
||||||
@ -27,6 +28,7 @@ impl Default for Config {
|
|||||||
footer_mode: FooterMode::Never,
|
footer_mode: FooterMode::Never,
|
||||||
animate_prompt: ANIMATE_PROMPT_DEFAULT,
|
animate_prompt: ANIMATE_PROMPT_DEFAULT,
|
||||||
float_precision: 4,
|
float_precision: 4,
|
||||||
|
without_color: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -84,12 +86,13 @@ impl Value {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
"animate_prompt" => {
|
"animate_prompt" => {
|
||||||
let val = value.as_bool()?;
|
config.animate_prompt = value.as_bool()?;
|
||||||
config.animate_prompt = val;
|
|
||||||
}
|
}
|
||||||
"float_precision" => {
|
"float_precision" => {
|
||||||
let val = value.as_integer()?;
|
config.float_precision = value.as_integer()?;
|
||||||
config.float_precision = val;
|
}
|
||||||
|
"without_color" => {
|
||||||
|
config.without_color = value.as_bool()?;
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
@ -12,10 +12,10 @@ name = "table"
|
|||||||
path = "src/main.rs"
|
path = "src/main.rs"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# nu-ansi-term = "0.39.0"
|
|
||||||
nu-ansi-term = { path = "../nu-ansi-term" }
|
nu-ansi-term = { path = "../nu-ansi-term" }
|
||||||
nu-protocol = { path = "../nu-protocol"}
|
nu-protocol = { path = "../nu-protocol"}
|
||||||
regex = "1.4"
|
regex = "1.4"
|
||||||
unicode-width = "0.1.8"
|
unicode-width = "0.1.8"
|
||||||
strip-ansi-escapes = "0.1.1"
|
strip-ansi-escapes = "0.1.1"
|
||||||
ansi-cut = "0.1.1"
|
ansi-cut = "0.1.1"
|
||||||
|
atty = "0.2.14"
|
||||||
|
@ -883,10 +883,11 @@ impl WrappedTable {
|
|||||||
fn print_table(&self, color_hm: &HashMap<String, Style>, config: &Config) -> String {
|
fn print_table(&self, color_hm: &HashMap<String, Style>, config: &Config) -> String {
|
||||||
let mut output = String::new();
|
let mut output = String::new();
|
||||||
|
|
||||||
#[cfg(windows)]
|
// TODO: This may be unnecessary after JTs changes. Let's remove it and see.
|
||||||
{
|
// #[cfg(windows)]
|
||||||
let _ = nu_ansi_term::enable_ansi_support();
|
// {
|
||||||
}
|
// let _ = nu_ansi_term::enable_ansi_support();
|
||||||
|
// }
|
||||||
|
|
||||||
if self.data.is_empty() {
|
if self.data.is_empty() {
|
||||||
return output;
|
return output;
|
||||||
@ -952,8 +953,19 @@ impl WrappedTable {
|
|||||||
output.push_str(&self.print_separator(SeparatorPosition::Bottom, color_hm));
|
output.push_str(&self.print_separator(SeparatorPosition::Bottom, color_hm));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// the atty is for when people do ls from vim, there should be no coloring there
|
||||||
|
if config.without_color || !atty::is(atty::Stream::Stdout) {
|
||||||
|
// Draw the table without ansi colors
|
||||||
|
if let Ok(bytes) = strip_ansi_escapes::strip(&output) {
|
||||||
|
String::from_utf8_lossy(&bytes).to_string()
|
||||||
|
} else {
|
||||||
output
|
output
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// Draw the table with ansi colors
|
||||||
|
output
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn process_table(table: &Table) -> ProcessedTable {
|
fn process_table(table: &Table) -> ProcessedTable {
|
||||||
|
Loading…
Reference in New Issue
Block a user