diff --git a/src/app/logic/calc.rs b/src/app/logic/calc.rs index 5fdadb9..f430b64 100644 --- a/src/app/logic/calc.rs +++ b/src/app/logic/calc.rs @@ -81,7 +81,7 @@ impl Grid { /// Save file to `path` as a csv. Path with have `csv` appended to it if it /// does not already have the extension. pub fn save_to(&mut self, path: impl Into) -> std::io::Result<()> { - let path = path.into(); + let mut path = path.into(); let resolve_values; @@ -94,13 +94,15 @@ impl Grid { resolve_values = false; } _ => { - resolve_values = false; - // path.add_extension(CUSTOM_EXT); + // File as an extension but isn't ours. + // Save as csv-like + resolve_values = true; } }, None => { + // File has no extension. Save it as our file type resolve_values = false; - // path.add_extension(CUSTOM_EXT); + path.add_extension(CUSTOM_EXT); } } @@ -543,8 +545,8 @@ fn saving_neoscim() { assert_eq!(cell.escaped_csv_string(), "=A10^2"); // set saving the file - let filename= "/tmp/file.neoscim"; - app.grid.save_to(filename).expect("This will only work on linux systems"); + let filename = format!("/tmp/file.{CUSTOM_EXT}"); + app.grid.save_to(&filename).expect("This will only work on linux systems"); let mut file = fs::OpenOptions::new().read(true).open(filename).expect("Just wrote the file"); let mut buf = String::new(); file.read_to_string(&mut buf).expect("Just opened the file"); diff --git a/src/app/mode.rs b/src/app/mode.rs index c28f8ef..c589c60 100644 --- a/src/app/mode.rs +++ b/src/app/mode.rs @@ -70,25 +70,11 @@ impl Mode { "w" => { // first try the passed argument as file if let Some(arg) = args.get(1) { - let mut path: PathBuf = arg.into(); - match path.extension() { - Some(s) => { - match s.to_str() { - // leave the file alone, it already has - // a valid extension - Some(CSV_EXT) | Some(CUSTOM_EXT) => {} - _ => { - path.add_extension(CUSTOM_EXT); - } - } - } - None => { - path.add_extension(CUSTOM_EXT); - } - }; + let path: PathBuf = arg.into(); - // TODO Check if the file exists, but the program wasn't opened with it. We might be accidentally overwriting something else. - // let mut file = fs::OpenOptions::new().write(true).append(false).truncate(true).create(true).open(path)?; + // TODO Check if the file we are writing to exists, since + // this code path already knows that we are writing to a new file. + // We might be accidentally overwriting something else. if let Err(e) = app.grid.save_to(&path) { app.msg = StatusMessage::error(format!("{e}"));