Skip to content

Commit cf1ca53

Browse files
committed
added display to allergens
1 parent d5becf4 commit cf1ca53

File tree

6 files changed

+53
-0
lines changed

6 files changed

+53
-0
lines changed

src/cache/menu_cache.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
use chrono::NaiveDate;
2+
3+
use crate::parse::LocationMeta;
4+
5+
struct menu_cache {
6+
date: NaiveDate,
7+
locations: Vec<LocationMeta>,
8+
}
9+
10+
impl menu_cache {}

src/cache/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
mod menu_cache;

src/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#![allow(dead_code)] // TODO: remove this line once done with crate
22

3+
mod cache;
34
mod fetch;
45
mod parse;
56

src/parse/daily_menu/allergens.rs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
use std::fmt::Display;
2+
13
use crate::parse::Error;
24
use bitflags::bitflags;
5+
use juniper::GraphQLObject;
36

47
#[derive(Debug, PartialEq, Eq)]
58
pub struct AllergenInfo(AllergenFlags);
@@ -90,6 +93,40 @@ bitflags! {
9093
}
9194
}
9295

96+
impl Display for AllergenFlags {
97+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
98+
let allergens = [
99+
(AllergenFlags::Egg, "Egg"),
100+
(AllergenFlags::Fish, "Fish"),
101+
(AllergenFlags::GlutenFriendly, "Gluten Friendly"),
102+
(AllergenFlags::Milk, "Milk"),
103+
(AllergenFlags::Peanut, "Peanut"),
104+
(AllergenFlags::Soy, "Soy"),
105+
(AllergenFlags::TreeNut, "Tree Nut"),
106+
(AllergenFlags::Alcohol, "Alcohol"),
107+
(AllergenFlags::Vegan, "Vegan"),
108+
(AllergenFlags::Vegetarian, "Vegetarian"),
109+
(AllergenFlags::Pork, "Pork"),
110+
(AllergenFlags::Beef, "Beef"),
111+
(AllergenFlags::Halal, "Halal"),
112+
(AllergenFlags::Shellfish, "Shellfish"),
113+
(AllergenFlags::Sesame, "Sesame"),
114+
];
115+
let mut first = true;
116+
for (allergen_flag, allergen_name) in allergens.into_iter() {
117+
if self.contains(allergen_flag) {
118+
if first {
119+
first = false;
120+
} else {
121+
write!(f, ", ")?;
122+
}
123+
write!(f, "{}", allergen_name)?;
124+
}
125+
}
126+
Ok(())
127+
}
128+
}
129+
93130
#[cfg(test)]
94131

95132
mod tests {

src/parse/locations/location_data.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ impl<'a> LocationData<'a> {
2626
};
2727

2828
slot.replace(menu);
29+
self.meals.sort();
2930

3031
Ok(())
3132
}

src/parse/locations/locations.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
use juniper::GraphQLObject;
2+
13
use crate::{parse::Error, static_selector};
24

35
use super::location_meta::LocationMeta;
6+
47
struct Locations {
58
locations: Vec<LocationMeta>,
69
}

0 commit comments

Comments
 (0)