use nu_protocol::{span as span_join, ShellError, Span, Spanned, Value}; // Default value used when selecting rows from dataframe pub const DEFAULT_ROWS: usize = 5; // Converts a Vec to a Vec> with a Span marking the whole // location of the columns for error referencing // todo - fix #[allow(dead_code)] pub(crate) fn convert_columns( columns: Vec, span: Span, ) -> Result<(Vec>, Span), ShellError> { // First column span let mut col_span = columns .first() .ok_or_else(|| ShellError::GenericError { error: "Empty column list".into(), msg: "Empty list found for command".into(), span: Some(span), help: None, inner: vec![], }) .map(|v| v.span())?; let res = columns .into_iter() .map(|value| { let span = value.span(); match value { Value::String { val, .. } => { col_span = span_join(&[col_span, span]); Ok(Spanned { item: val, span }) } _ => Err(ShellError::GenericError { error: "Incorrect column format".into(), msg: "Only string as column name".into(), span: Some(span), help: None, inner: vec![], }), } }) .collect::>, _>>()?; Ok((res, col_span)) } // Converts a Vec to a Vec with a Span marking the whole // location of the columns for error referencing pub(crate) fn convert_columns_string( columns: Vec, span: Span, ) -> Result<(Vec, Span), ShellError> { // First column span let mut col_span = columns .first() .ok_or_else(|| ShellError::GenericError { error: "Empty column list".into(), msg: "Empty list found for command".into(), span: Some(span), help: None, inner: vec![], }) .map(|v| v.span())?; let res = columns .into_iter() .map(|value| { let span = value.span(); match value { Value::String { val, .. } => { col_span = span_join(&[col_span, span]); Ok(val) } _ => Err(ShellError::GenericError { error: "Incorrect column format".into(), msg: "Only string as column name".into(), span: Some(span), help: None, inner: vec![], }), } }) .collect::, _>>()?; Ok((res, col_span)) }