diff --git a/src/main.rs b/src/main.rs index e3ed136..2dbc59a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,4 @@ use eframe::egui; -use std::io::Write as _; use billy_sheet::gui::SheetGui; @@ -41,20 +40,9 @@ impl eframe::App for Gui { _frame.close(); } if ui.button("Save in json").clicked() { - let result = serde_json::to_string_pretty(&self.sheet); - match result { - Ok(sheet_str) => { - let path = std::path::Path::new("./sheet.json"); - match std::fs::File::create(path) { - Ok(mut file) => { - if let Err(err) = write!(file, "{}", sheet_str) { - println!("{err}"); - } - } - Err(error) => println!("{error}"), - } - } - Err(error) => println!("{error}"), + let path = std::path::Path::new("./sheet.json"); + if let Err(error) = billy_sheet::sheet::write_sheet(path, &self.sheet) { + println!("{error}"); } } }); diff --git a/src/sheet.rs b/src/sheet.rs index c2c6cb3..0021891 100644 --- a/src/sheet.rs +++ b/src/sheet.rs @@ -1,6 +1,7 @@ use eframe::egui::widgets::DragValue; use eframe::egui::Ui; use serde::{Deserialize, Serialize}; +use std::io::Write as _; use crate::gui::SheetGui; @@ -36,6 +37,12 @@ pub struct CharacterSheet { money: u32, } +pub fn write_sheet(path: &std::path::Path, sheet: &CharacterSheet) -> std::io::Result<()> { + let sheet_str = serde_json::to_string_pretty(&sheet)?; + let mut file = std::fs::File::create(path)?; + write!(file, "{}", sheet_str) +} + impl CharacterSheet { pub fn character_class(&self) -> &Classe { &self.character_class