mirror of
https://github.com/nushell/nushell.git
synced 2024-11-08 01:24:38 +01:00
Remove 'empty' block support reminders, for now. (#5214)
This commit is contained in:
parent
07893e01c1
commit
7a7aa310aa
@ -56,6 +56,7 @@ impl Command for Empty {
|
||||
}),
|
||||
},
|
||||
Example {
|
||||
// TODO: revisit empty cell path semantics for a record.
|
||||
description: "Check if more than one column are empty",
|
||||
example: "[[meal size]; [arepa small] [taco '']] | empty? meal size",
|
||||
result: Some(Value::Bool {
|
||||
@ -125,30 +126,15 @@ fn empty(
|
||||
span: head,
|
||||
}
|
||||
.into_pipeline_data()),
|
||||
PipelineData::Value(value, ..) => {
|
||||
let answer = is_empty(value);
|
||||
|
||||
Ok(Value::Bool {
|
||||
val: answer,
|
||||
span: head,
|
||||
}
|
||||
.into_pipeline_data())
|
||||
PipelineData::Value(value, ..) => Ok(Value::Bool {
|
||||
val: value.is_empty(),
|
||||
span: head,
|
||||
}
|
||||
.into_pipeline_data()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn is_empty(value: Value) -> bool {
|
||||
match value {
|
||||
Value::List { vals, .. } => vals.is_empty(),
|
||||
Value::String { val, .. } => val.is_empty(),
|
||||
Value::Binary { val, .. } => val.is_empty(),
|
||||
Value::Nothing { .. } => true,
|
||||
Value::Record { cols, .. } => cols.is_empty(),
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
@ -1,7 +1,5 @@
|
||||
use nu_test_support::{nu, pipeline};
|
||||
|
||||
// FIXME: jt: needs more work
|
||||
#[ignore]
|
||||
#[test]
|
||||
fn reports_emptiness() {
|
||||
let actual = nu!(
|
||||
@ -10,85 +8,14 @@ fn reports_emptiness() {
|
||||
echo [[are_empty];
|
||||
[([[check]; [[]] ])]
|
||||
[([[check]; [""] ])]
|
||||
[([[check]; [(wrap)] ])]
|
||||
[([[check]; [{}] ])]
|
||||
]
|
||||
| get are_empty
|
||||
| empty? check
|
||||
| where check
|
||||
| length
|
||||
| all? {
|
||||
empty? check
|
||||
}
|
||||
"#
|
||||
));
|
||||
|
||||
assert_eq!(actual.out, "3");
|
||||
}
|
||||
|
||||
// FIXME: jt: needs more work
|
||||
#[ignore]
|
||||
#[test]
|
||||
fn sets_block_run_value_for_an_empty_column() {
|
||||
let actual = nu!(
|
||||
cwd: ".", pipeline(
|
||||
r#"
|
||||
echo [
|
||||
[ first_name, last_name, rusty_at, likes ];
|
||||
[ Andrés, Robalino, 10/11/2013, 1 ]
|
||||
[ Jonathan, Turner, 10/12/2013, 1 ]
|
||||
[ Jason, Gedge, 10/11/2013, 1 ]
|
||||
[ Yehuda, Katz, 10/11/2013, '' ]
|
||||
]
|
||||
| empty? likes -b {|_| 1 }
|
||||
| get likes
|
||||
| math sum
|
||||
"#
|
||||
));
|
||||
|
||||
assert_eq!(actual.out, "4");
|
||||
}
|
||||
|
||||
// FIXME: jt: needs more work
|
||||
#[ignore]
|
||||
#[test]
|
||||
fn sets_block_run_value_for_many_empty_columns() {
|
||||
let actual = nu!(
|
||||
cwd: ".", pipeline(
|
||||
r#"
|
||||
echo [
|
||||
[ boost check ];
|
||||
[ 1, [] ]
|
||||
[ 1, "" ]
|
||||
[ 1, (wrap) ]
|
||||
]
|
||||
| empty? boost check -b { 1 }
|
||||
| get boost check
|
||||
| math sum
|
||||
"#
|
||||
));
|
||||
|
||||
assert_eq!(actual.out, "6");
|
||||
}
|
||||
|
||||
// FIXME: jt: needs more work
|
||||
#[ignore]
|
||||
#[test]
|
||||
fn passing_a_block_will_set_contents_on_empty_cells_and_leave_non_empty_ones_untouched() {
|
||||
let actual = nu!(
|
||||
cwd: ".", pipeline(
|
||||
r#"
|
||||
echo [
|
||||
[ NAME, LVL, HP ];
|
||||
[ Andrés, 30, 3000 ]
|
||||
[ Alistair, 29, 2900 ]
|
||||
[ Arepas, "", "" ]
|
||||
[ Jorge, 30, 3000 ]
|
||||
]
|
||||
| empty? LVL -b { 9 }
|
||||
| empty? HP -b {
|
||||
$it.LVL * 1000
|
||||
}
|
||||
| math sum
|
||||
| get HP
|
||||
"#
|
||||
));
|
||||
|
||||
assert_eq!(actual.out, "17900");
|
||||
assert_eq!(actual.out, "true");
|
||||
}
|
||||
|
@ -31,6 +31,10 @@ impl Span {
|
||||
Span { start, end }
|
||||
}
|
||||
|
||||
pub fn unknown() -> Self {
|
||||
Self::new(0, 0)
|
||||
}
|
||||
|
||||
/// Note: Only use this for test data, *not* live data, as it will point into unknown source
|
||||
/// when used in errors.
|
||||
pub fn test_data() -> Span {
|
||||
|
@ -586,12 +586,9 @@ impl Value {
|
||||
pub fn is_empty(&self) -> bool {
|
||||
match self {
|
||||
Value::String { val, .. } => val.is_empty(),
|
||||
Value::List { vals, .. } => {
|
||||
vals.is_empty() && vals.iter().all(|v| v.clone().is_empty())
|
||||
}
|
||||
Value::Record { cols, vals, .. } => {
|
||||
cols.iter().all(|v| v.is_empty()) && vals.iter().all(|v| v.clone().is_empty())
|
||||
}
|
||||
Value::List { vals, .. } => vals.is_empty(),
|
||||
Value::Record { cols, .. } => cols.is_empty(),
|
||||
Value::Binary { val, .. } => val.is_empty(),
|
||||
Value::Nothing { .. } => true,
|
||||
_ => false,
|
||||
}
|
||||
@ -2421,3 +2418,63 @@ fn get_config_filesize_format(config: &Config) -> (ByteUnit, &str) {
|
||||
|
||||
filesize_format
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
|
||||
use super::{Span, Value};
|
||||
|
||||
mod is_empty {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_string() {
|
||||
let value = Value::string("", Span::unknown());
|
||||
assert!(value.is_empty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_list() {
|
||||
let list_with_no_values = Value::List {
|
||||
vals: vec![],
|
||||
span: Span::unknown(),
|
||||
};
|
||||
let list_with_one_empty_string = Value::List {
|
||||
vals: vec![Value::string("", Span::unknown())],
|
||||
span: Span::unknown(),
|
||||
};
|
||||
|
||||
assert!(list_with_no_values.is_empty());
|
||||
assert!(!list_with_one_empty_string.is_empty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_record() {
|
||||
let no_columns_nor_cell_values = Value::Record {
|
||||
cols: vec![],
|
||||
vals: vec![],
|
||||
span: Span::unknown(),
|
||||
};
|
||||
let one_column_and_one_cell_value_with_empty_strings = Value::Record {
|
||||
cols: vec![String::from("")],
|
||||
vals: vec![Value::string("", Span::unknown())],
|
||||
span: Span::unknown(),
|
||||
};
|
||||
let one_column_with_a_string_and_one_cell_value_with_empty_string = Value::Record {
|
||||
cols: vec![String::from("column")],
|
||||
vals: vec![Value::string("", Span::unknown())],
|
||||
span: Span::unknown(),
|
||||
};
|
||||
let one_column_with_empty_string_and_one_value_with_a_string = Value::Record {
|
||||
cols: vec![String::from("")],
|
||||
vals: vec![Value::string("text", Span::unknown())],
|
||||
span: Span::unknown(),
|
||||
};
|
||||
|
||||
assert!(no_columns_nor_cell_values.is_empty());
|
||||
assert!(!one_column_and_one_cell_value_with_empty_strings.is_empty());
|
||||
assert!(!one_column_with_a_string_and_one_cell_value_with_empty_string.is_empty());
|
||||
assert!(!one_column_with_empty_string_and_one_value_with_a_string.is_empty());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user