This commit is contained in:
2019-01-21 15:02:29 +01:00
parent 5233e44bf4
commit f7ba3ed3a6
3 changed files with 56 additions and 41 deletions

View File

@@ -1,16 +1,7 @@
mod meal; mod recipe;
mod storage; mod storage;
mod importer; mod importer;
pub use self::meal::Meal;
pub fn fetch_meals() -> Vec<Meal> {
vec![
Meal::new("Raclette".to_string(), 800),
Meal::new("Soupe".to_string(), 400),
]
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
#[test] #[test]

View File

@@ -1,31 +0,0 @@
/// An individual ingredient
pub struct Ingredient {
name: String,
}
impl Ingredient {
pub(super) fn new(name: String) -> Ingredient {
Ingredient { name }
}
}
/// An ordered set of dishes
#[derive(Debug,Clone)]
pub struct Meal {
name: String,
nutritional_value: i32,
}
impl Meal {
pub(super) fn new(name: String, nutritional_value: i32) -> Meal {
Meal { name, nutritional_value }
}
pub fn nutritional_value(&self) -> i32 {
self.nutritional_value
}
}

55
cookbook/src/recipe.rs Normal file
View File

@@ -0,0 +1,55 @@
/// Tag associated with ingredients
pub enum FoodTag {
Viande,
Poisson,
Legume,
}
/// Categories for recipe, to organize them for navigation and planning
pub enum RecipeCategory {
PetitDejeuner,
Entree,
Plat,
Dessert,
}
/// A collection of tags, to be improved
type FoodTags = Vec<FoodTag>;
/// Nutritionnal values per 100g, to be improved
#[derive(Default)]
struct NutritionnalValues;
/// An individual ingredient
#[derive(Default)]
pub struct Ingredient {
/// All known alias of a same ingredient
alias: Vec<String>,
/// Nutrionnal values per 100g
nutrition: NutritionnalValues,
/// Associated tags to constraint planning
tags: FoodTags,
}
impl Ingredient {
/// Builds a brand new ingredient with given name as first alias
pub(super) fn new(name: String) -> Ingredient {
Ingredient {
alias: vec![name],
..
Default::default()
}
}
/// Find an existing ingredient by alias
pub fn find(alias: &str) -> Option<Ingredient> {
None
}
/// Get the ingredient most common name
pub fn name(&self) -> &str {
self.alias.first().expect("Ingredient without any name !")
}
}