diff --git a/src/lib.rs b/src/lib.rs index 81a732a..5230770 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,8 @@ // src/lib.rs use serde::{Serialize, Deserialize}; +use serde_json; +use std::fmt; #[derive(Default, Serialize, Deserialize, PartialEq)] enum Semester { @@ -9,6 +11,15 @@ enum Semester { Letny } +impl fmt::Display for Semester { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Semester::Zimny => write!(f, "Zimny"), + Semester::Letny => write!(f, "Letny"), + } + } +} + #[derive(Default, Serialize, Deserialize, PartialEq, Eq, Hash, Copy, Clone)] enum TypPovinnosti { Povinny, @@ -17,6 +28,16 @@ enum TypPovinnosti { Vyberovy, } +impl fmt::Display for TypPovinnosti { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + TypPovinnosti::Povinny => write!(f, "Povinny"), + TypPovinnosti::PovinneVoliteny => write!(f, "PovinneVoliteny"), + TypPovinnosti::Vyberovy => write!(f, "Vyberovy"), + } + } +} + #[derive(Default, Serialize, Deserialize)] struct Predmet { kod: String, @@ -30,12 +51,44 @@ struct Predmet { typ_povinnosti: TypPovinnosti } +impl fmt::Display for Predmet { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "({}, {}, {}, {}, {}, {}, {}, {}, {})", + self.kod, + self.nazov, + self.vyucujuci.join(", "), + self.popis, + self.semester, + self.rocnik, + self.pocet_kreditov, + self.znamka, + self.typ_povinnosti + ) + } +} + #[derive(Default, Serialize, Deserialize)] struct Index { + predmety: Vec } impl Index{ + pub fn nacitaj_zo_suboru(&self, cesta: &std::path::PathBuf) -> Option { + let data = match std::fs::read_to_string(cesta) { + Ok(x) => x, + Err(_) => return None, + }; + let vysledok = match serde_json::from_str(data.as_str()) { + Ok(k) => k, + Err(_) => return None, + }; + Some(vysledok) + } + pub fn uloz_do_suboru(&self, cesta_uloz: &std::path::PathBuf) -> bool { + true + + } } impl Predmet {