From 36fdf4d8066aba372fbbaedf61d13caf4bbef362 Mon Sep 17 00:00:00 2001 From: structix Date: Sun, 21 Apr 2024 22:21:24 +0200 Subject: [PATCH] Update formatting --- src/cli.rs | 36 +++++++++---------- src/main.rs | 26 ++++++++------ src/mensa.rs | 100 +++++++++++++++++++++++++++++++++------------------ 3 files changed, 99 insertions(+), 63 deletions(-) diff --git a/src/cli.rs b/src/cli.rs index 0b2f1b9..3ed5299 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -4,29 +4,29 @@ use clap::Parser; #[derive(Parser, Debug)] #[command(author, version, about, long_about = None)] pub struct Args { - /// Show Mensa Morgenstelle - #[arg(short, long, default_value_t = false)] - pub morgenstelle: bool, + /// Show Mensa Morgenstelle + #[arg(short, long, default_value_t = false)] + pub morgenstelle: bool, - /// Show Mensa Shedhalle - #[arg(short, long, default_value_t = false)] - pub shedhalle: bool, + /// Show Mensa Shedhalle + #[arg(short, long, default_value_t = false)] + pub shedhalle: bool, - /// Format as plain text - #[arg(short, long, default_value_t = false)] - pub plaintext: bool, + /// Format as plain text + #[arg(short, long, default_value_t = false)] + pub plaintext: bool, - /// Use very short format (oneline) - #[arg(short, long, default_value_t = false)] - pub oneline: bool, + /// Use very short format (oneline) + #[arg(short, long, default_value_t = false)] + pub oneline: bool, - /// Offset of days in the future (valid inputs 0-7) - #[arg(short, long, default_value_t = 0)] - pub days: u8, + /// Offset of days in the future (valid inputs 0-7) + #[arg(short, long, default_value_t = 0)] + pub days: u8, - /// Show the vegetarian menu - #[arg(short, long, default_value_t = false)] - pub vegetarian: bool, + /// Show the vegetarian menu + #[arg(short, long, default_value_t = false)] + pub vegetarian: bool, } pub fn get_args() -> Args { diff --git a/src/main.rs b/src/main.rs index 9fbfac2..3143afe 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,11 @@ -use mensa::Mealplan; -use comfy_table::*; -use comfy_table::presets::UTF8_FULL; +use chrono::{Datelike, Local}; use comfy_table::modifiers::UTF8_ROUND_CORNERS; -use chrono::{Local, Datelike}; +use comfy_table::presets::UTF8_FULL; +use comfy_table::*; +use mensa::Mealplan; -mod mensa; mod cli; +mod mensa; //use crate::mensa::*; @@ -35,7 +35,7 @@ async fn exec_arguments(args: &cli::Args) -> Result<(), Box print fancy if let Some(dt) = Local::now().checked_add_days(chrono::Days::new(args.days as u64)) { println!("Datum: {}", dt.date_naive()); } println!("{}", m.name()); - table_short(menus.iter().map(|&x| x.get_short_info()).collect::>()); - } + table_short( + menus + .iter() + .map(|&x| x.get_short_info()) + .collect::>(), + ); + } } fn table_short(data: Vec<(&str, String, &str)>) { @@ -68,7 +73,7 @@ fn table_short(data: Vec<(&str, String, &str)>) { .set_content_arrangement(ContentArrangement::Dynamic) //.set_width(40) .set_header(vec!["Art", "Beschreibung", "Preis (Student)"]); - + for d in data.iter() { table.add_row(vec![Cell::new(d.0), Cell::new(&d.1), Cell::new(d.2)]); } @@ -78,4 +83,3 @@ fn table_short(data: Vec<(&str, String, &str)>) { println!("{table}"); } - diff --git a/src/mensa.rs b/src/mensa.rs index 2f77b72..d4cfdc7 100644 --- a/src/mensa.rs +++ b/src/mensa.rs @@ -1,12 +1,11 @@ extern crate serde_derive; -use chrono::{Local, Datelike}; - -use serde::{Serialize, Deserialize}; +use chrono::{Datelike, Local}; +use serde::{Deserialize, Serialize}; pub enum MensaName { Shedhalle, - Morgenstelle + Morgenstelle, } pub trait Mealplan { @@ -18,25 +17,29 @@ pub trait Mealplan { pub enum Mensa { Shedhalle(MensaShedhalle), - Morgenstelle(MensaMorgenstelle) + Morgenstelle(MensaMorgenstelle), } impl Mensa { pub async fn from(name: MensaName) -> Result> { match name { MensaName::Shedhalle => { - let resp = reqwest::get("https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/611?lang=de") - .await? - .json::() - .await?; + let resp = reqwest::get( + "https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/611?lang=de", + ) + .await? + .json::() + .await?; Ok(Mensa::Shedhalle(resp)) - }, + } MensaName::Morgenstelle => { - let resp = reqwest::get("https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/621?lang=de") - .await? - .json::() - .await?; + let resp = reqwest::get( + "https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/621?lang=de", + ) + .await? + .json::() + .await?; Ok(Mensa::Morgenstelle(resp)) } @@ -44,8 +47,6 @@ impl Mensa { } } - - fn get_nth_date(days: u8) -> Option> { if days > 7 { return None; @@ -55,13 +56,12 @@ fn get_nth_date(days: u8) -> Option> { return match dt.weekday() { chrono::Weekday::Sat => dt.checked_add_days(chrono::Days::new(2)), chrono::Weekday::Sun => dt.checked_add_days(chrono::Days::new(1)), - _ => Some(dt) + _ => Some(dt), }; } None } - #[derive(Debug, Serialize, Deserialize)] pub struct MensaShedhalle { #[serde(rename = "611")] @@ -85,7 +85,11 @@ impl Mealplan for MensaShedhalle { fn today(&self) -> Vec<&Menu> { let local = format!("{}", Local::now().format("%Y-%m-%d")); - self.canteen.menus.iter().filter(|&x| x.menu_date == local).collect() + self.canteen + .menus + .iter() + .filter(|&x| x.menu_date == local) + .collect() } fn nth(&self, days: u8, vegetarian: bool) -> Option> { @@ -93,19 +97,28 @@ impl Mealplan for MensaShedhalle { Some(dt) => { let local = format!("{}", dt.format("%Y-%m-%d")); if vegetarian { - Some(self.canteen.menus.iter().filter(|&x| x.menu_date == local && x.menu_line.contains("veg")).collect()) + Some( + self.canteen + .menus + .iter() + .filter(|&x| x.menu_date == local && x.menu_line.contains("veg")) + .collect(), + ) } else { - Some(self.canteen.menus.iter().filter(|&x| x.menu_date == local).collect()) + Some( + self.canteen + .menus + .iter() + .filter(|&x| x.menu_date == local) + .collect(), + ) } - }, - _ => None + } + _ => None, } } } - - - #[derive(Debug, Serialize, Deserialize)] pub struct MensaMorgenstelle { #[serde(rename = "621")] @@ -123,7 +136,11 @@ impl Mealplan for MensaMorgenstelle { fn today(&self) -> Vec<&Menu> { let local = format!("{}", Local::now().format("%Y-%m-%d")); - self.canteen.menus.iter().filter(|&x| x.menu_date == local).collect() + self.canteen + .menus + .iter() + .filter(|&x| x.menu_date == local) + .collect() } fn nth(&self, days: u8, vegetarian: bool) -> Option> { @@ -131,17 +148,28 @@ impl Mealplan for MensaMorgenstelle { Some(dt) => { let local = format!("{}", dt.format("%Y-%m-%d")); if vegetarian { - Some(self.canteen.menus.iter().filter(|&x| x.menu_date == local && x.menu_line.contains("veg")).collect()) + Some( + self.canteen + .menus + .iter() + .filter(|&x| x.menu_date == local && x.menu_line.contains("veg")) + .collect(), + ) } else { - Some(self.canteen.menus.iter().filter(|&x| x.menu_date == local).collect()) + Some( + self.canteen + .menus + .iter() + .filter(|&x| x.menu_date == local) + .collect(), + ) } - }, - _ => None + } + _ => None, } } } - #[derive(Debug, Serialize, Deserialize)] pub struct Canteen { #[serde(rename = "canteenId")] @@ -179,7 +207,12 @@ impl Menu { } pub fn print_short_info(&self) { - println!("{}: {}, {}€", self.menu_line, self.menu.join(", "), self.student_price); + println!( + "{}: {}, {}€", + self.menu_line, + self.menu.join(", "), + self.student_price + ); } pub fn print_very_short_info(&self) { @@ -215,4 +248,3 @@ pub enum FiltersInclude { #[serde(rename = "vegan")] Vegan, } -