diff --git a/crates/nu-command/src/dataframe/values/nu_dataframe/conversion.rs b/crates/nu-command/src/dataframe/values/nu_dataframe/conversion.rs index bc659dd884..7c1c94f9ff 100644 --- a/crates/nu-command/src/dataframe/values/nu_dataframe/conversion.rs +++ b/crates/nu-command/src/dataframe/values/nu_dataframe/conversion.rs @@ -34,10 +34,6 @@ impl Column { pub fn name(&self) -> &str { self.name.as_str() } - - //pub fn iter(&self) -> impl Iterator { - // self.values.iter() - //} } impl IntoIterator for Column { @@ -72,6 +68,7 @@ pub enum InputType { Object, Date, Duration, + Filesize, } #[derive(Debug)] @@ -616,6 +613,9 @@ pub fn insert_value( Value::Duration { .. } => { col_val.column_type = Some(InputType::Duration); } + Value::Filesize { .. } => { + col_val.column_type = Some(InputType::Filesize); + } _ => col_val.column_type = Some(InputType::Object), } col_val.values.push(value); @@ -628,6 +628,7 @@ pub fn insert_value( | (Value::String { .. }, Value::String { .. }) | (Value::Bool { .. }, Value::Bool { .. }) | (Value::Date { .. }, Value::Date { .. }) + | (Value::Filesize { .. }, Value::Filesize { .. }) | (Value::Duration { .. }, Value::Duration { .. }) => col_val.values.push(value), _ => { col_val.column_type = Some(InputType::Object); @@ -659,6 +660,12 @@ pub fn from_parsed_columns(column_values: ColumnMap) -> Result { + let series_values: Result, _> = + column.values.iter().map(|v| v.as_i64()).collect(); + let series = Series::new(&name, series_values?); + df_series.push(series) + } InputType::String => { let series_values: Result, _> = column.values.iter().map(|v| v.as_string()).collect(); @@ -698,17 +705,10 @@ pub fn from_parsed_columns(column_values: ColumnMap) -> Result { - let it = column.values.iter().map(|v| { - if let Value::Duration { val, .. } = &v { - Some(*val) - } else { - None - } - }); - - let res = ChunkedArray::::from_iter_options(&name, it); - - df_series.push(res.into_series()) + let series_values: Result, _> = + column.values.iter().map(|v| v.as_i64()).collect(); + let series = Series::new(&name, series_values?); + df_series.push(series) } } } diff --git a/crates/nu-protocol/src/value/from.rs b/crates/nu-protocol/src/value/from.rs index b3d11ea12f..fb996c9bc9 100644 --- a/crates/nu-protocol/src/value/from.rs +++ b/crates/nu-protocol/src/value/from.rs @@ -16,6 +16,8 @@ impl Value { pub fn as_i64(&self) -> Result { match self { Value::Int { val, .. } => Ok(*val), + Value::Filesize { val, .. } => Ok(*val), + Value::Duration { val, .. } => Ok(*val), x => Err(ShellError::CantConvert( "i64".into(), x.get_type().to_string(),