From b574dc6365795da63fb241b77f06847986c49306 Mon Sep 17 00:00:00 2001 From: Shaurya Shubham Date: Tue, 7 Jan 2020 12:05:00 +0530 Subject: [PATCH] Add the from-ods command (#1161) * Put a sample_data.ods file for testing This is a copy of the sample_data.xlsx file but in ods format * Add the from-ods command Most of the work was doing `rg xlsx` and then copy/paste with light editing * Add tests for the from-ods command * Fix failing test The problem was improper filename sorting in the test `prepares_and_decorates_filesystem_source_files` --- src/cli.rs | 1 + src/commands.rs | 2 + src/commands/from_ods.rs | 113 +++++++++++++++++++++++++ src/utils.rs | 4 + tests/converting_formats/mod.rs | 1 + tests/converting_formats/ods.rs | 17 ++++ tests/fixtures/formats/sample_data.ods | Bin 0 -> 49626 bytes 7 files changed, 138 insertions(+) create mode 100644 src/commands/from_ods.rs create mode 100644 tests/converting_formats/ods.rs create mode 100644 tests/fixtures/formats/sample_data.ods diff --git a/src/cli.rs b/src/cli.rs index db2244b8e8..0933dfe353 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -320,6 +320,7 @@ pub async fn cli() -> Result<(), Box> { whole_stream_command(FromINI), whole_stream_command(FromBSON), whole_stream_command(FromJSON), + whole_stream_command(FromODS), whole_stream_command(FromDB), whole_stream_command(FromSQLite), whole_stream_command(FromTOML), diff --git a/src/commands.rs b/src/commands.rs index 843042b2a3..d28ce3b279 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -31,6 +31,7 @@ pub(crate) mod from_bson; pub(crate) mod from_csv; pub(crate) mod from_ini; pub(crate) mod from_json; +pub(crate) mod from_ods; pub(crate) mod from_sqlite; pub(crate) mod from_ssv; pub(crate) mod from_toml; @@ -125,6 +126,7 @@ pub(crate) use from_bson::FromBSON; pub(crate) use from_csv::FromCSV; pub(crate) use from_ini::FromINI; pub(crate) use from_json::FromJSON; +pub(crate) use from_ods::FromODS; pub(crate) use from_sqlite::FromDB; pub(crate) use from_sqlite::FromSQLite; pub(crate) use from_ssv::FromSSV; diff --git a/src/commands/from_ods.rs b/src/commands/from_ods.rs new file mode 100644 index 0000000000..0f1910250f --- /dev/null +++ b/src/commands/from_ods.rs @@ -0,0 +1,113 @@ +use crate::commands::WholeStreamCommand; +use crate::prelude::*; +use crate::TaggedListBuilder; +use calamine::*; +use nu_errors::ShellError; +use nu_protocol::{Primitive, ReturnSuccess, Signature, TaggedDictBuilder, UntaggedValue, Value}; +use std::io::Cursor; + +pub struct FromODS; + +#[derive(Deserialize)] +pub struct FromODSArgs { + headerless: bool, +} + +impl WholeStreamCommand for FromODS { + fn name(&self) -> &str { + "from-ods" + } + + fn signature(&self) -> Signature { + Signature::build("from-ods") + .switch("headerless", "don't treat the first row as column names") + } + + fn usage(&self) -> &str { + "Parse OpenDocument Spreadsheet(.ods) data and create table." + } + + fn run( + &self, + args: CommandArgs, + registry: &CommandRegistry, + ) -> Result { + args.process(registry, from_ods)?.run() + } +} + +fn from_ods( + FromODSArgs { + headerless: _headerless, + }: FromODSArgs, + runnable_context: RunnableContext, +) -> Result { + let input = runnable_context.input; + let tag = runnable_context.name; + + let stream = async_stream! { + let values: Vec = input.values.collect().await; + + for value in values { + let value_span = value.tag.span; + let value_tag = value.tag.clone(); + + match value.value { + UntaggedValue::Primitive(Primitive::Binary(vb)) => { + let mut buf: Cursor> = Cursor::new(vb); + let mut ods = Ods::<_>::new(buf).map_err(|_| ShellError::labeled_error( + "Could not load ods file", + "could not load ods file", + &tag))?; + + let mut dict = TaggedDictBuilder::new(&tag); + + let sheet_names = ods.sheet_names().to_owned(); + + for sheet_name in &sheet_names { + let mut sheet_output = TaggedListBuilder::new(&tag); + + if let Some(Ok(current_sheet)) = ods.worksheet_range(sheet_name) { + for row in current_sheet.rows() { + let mut row_output = TaggedDictBuilder::new(&tag); + for (i, cell) in row.iter().enumerate() { + let value = match cell { + DataType::Empty => UntaggedValue::nothing(), + DataType::String(s) => UntaggedValue::string(s), + DataType::Float(f) => UntaggedValue::decimal(*f), + DataType::Int(i) => UntaggedValue::int(*i), + DataType::Bool(b) => UntaggedValue::boolean(*b), + _ => UntaggedValue::nothing(), + }; + + row_output.insert_untagged(&format!("Column{}", i), value); + } + + sheet_output.push_untagged(row_output.into_untagged_value()); + } + + dict.insert_untagged(sheet_name, sheet_output.into_untagged_value()); + } else { + yield Err(ShellError::labeled_error( + "Could not load sheet", + "could not load sheet", + &tag)); + } + } + + yield ReturnSuccess::value(dict.into_value()); + } + _ => yield Err(ShellError::labeled_error_with_secondary( + "Expected binary data from pipeline", + "requires binary data input", + &tag, + "value originates from here", + value_tag, + )), + + } + } + }; + + Ok(stream.to_output_stream()) +} diff --git a/src/utils.rs b/src/utils.rs index 3cb42b894b..1d45307636 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -344,6 +344,10 @@ mod tests { loc: fixtures().join("sample.url"), at: 0 }, + Res { + loc: fixtures().join("sample_data.ods"), + at: 0 + }, Res { loc: fixtures().join("sample_data.xlsx"), at: 0 diff --git a/tests/converting_formats/mod.rs b/tests/converting_formats/mod.rs index eff8d68556..c222f449d4 100644 --- a/tests/converting_formats/mod.rs +++ b/tests/converting_formats/mod.rs @@ -1,6 +1,7 @@ mod bson; mod csv; mod json; +mod ods; mod sqlite; mod ssv; mod toml; diff --git a/tests/converting_formats/ods.rs b/tests/converting_formats/ods.rs new file mode 100644 index 0000000000..1597f9b522 --- /dev/null +++ b/tests/converting_formats/ods.rs @@ -0,0 +1,17 @@ +use nu_test_support::{nu, pipeline}; + +#[test] +fn from_ods_file_to_table() { + let actual = nu!( + cwd: "tests/fixtures/formats", pipeline( + r#" + open sample_data.ods + | get SalesOrders + | nth 4 + | get Column2 + | echo $it + "# + )); + + assert_eq!(actual, "Gill"); +} diff --git a/tests/fixtures/formats/sample_data.ods b/tests/fixtures/formats/sample_data.ods new file mode 100644 index 0000000000000000000000000000000000000000..5bcd2bda44433949cc386b3be0bfc7db036108f3 GIT binary patch literal 49626 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