https://github.com/filipmnowak/ex_kcal
Handle culinary recipes and calculate their nutritional value (pre-alpha / WIP)
https://github.com/filipmnowak/ex_kcal
alpha calorie-calculator elixir nutrition work-in-progress
Last synced: 5 months ago
JSON representation
Handle culinary recipes and calculate their nutritional value (pre-alpha / WIP)
- Host: GitHub
- URL: https://github.com/filipmnowak/ex_kcal
- Owner: filipmnowak
- License: unlicense
- Created: 2019-04-28T12:58:07.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-08-11T08:30:16.000Z (almost 2 years ago)
- Last Synced: 2025-10-12T15:46:28.802Z (9 months ago)
- Topics: alpha, calorie-calculator, elixir, nutrition, work-in-progress
- Language: Elixir
- Homepage:
- Size: 11.2 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# ExKcal
## Notes
This is exploratory, toy project, strange things in the code, too much emphasis on types etc.
## Installation
[Available in Hex](https://hex.pm/docs/publish); the package can be installed by adding `ex_kcal`
to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:ex_kcal, "~> 0.0.6"}
]
end
```
## Examples
```elixir
iex> alias ExKcal.Fats
iex> alias ExKcal.Product
iex> alias ExKcal.Products
iex> import ExKcal.Calc
iex> alias ExKcal.Recipe
iex> import Recipe
iex> alias ExKcal.Recipe.Step, as: RecipeStep
iex> alias ExKcal.Recipe.Time, as: RecipeTime
iex> strange_apple = %Product{name: "strange apple",
...> kcal: 301.0,
...> amount: {100.0, :g},
...> fats: %Fats{total: {4.0, :kg}}} |> adjust_amount({1.0, :kg})
%ExKcal.Product{
alcohols: %ExKcal.Alcohols{
ethanol: {nil, :none},
other: {nil, :none},
total: {nil, :none}
},
amount: {1.0, :kg},
brand: "",
carbs: %ExKcal.Carbs{
dietary_fiber: {nil, :none},
other: {nil, :none},
starch: {nil, :none},
sugars: {nil, :none},
total: {nil, :none}
},
description: "",
fats: %ExKcal.Fats{
monounsaturated: {nil, :none},
polyunsaturated: {nil, :none},
saturated: {nil, :none},
total: {40.0, :kg}
},
kcal: 3010.0,
minerals: %ExKcal.Minerals{
calcium: {nil, :none},
chloride: {nil, :none},
chromium: {nil, :none},
copper: {nil, :none},
fluoride: {nil, :none},
iodide: {nil, :none},
iodine: {nil, :none},
iron: {nil, :none},
magnesium: {nil, :none},
manganese: {nil, :none},
molybdenum: {nil, :none},
phosphorus: {nil, :none},
potassium: {nil, :none},
selenium: {nil, :none},
sodium: {nil, :none},
sulfur: {nil, :none},
zinc: {nil, :none}
},
name: "strange apple",
note: "",
origin: [],
produced: [],
producer: "",
proteins: {nil, :none},
salt: {nil, :none},
vitamins: %ExKcal.Vitamins{
choline: {nil, :none},
vitamin_a: {nil, :none},
vitamin_b1: {nil, :none},
vitamin_b12: {nil, :none},
vitamin_b2: {nil, :none},
vitamin_b3: {nil, :none},
vitamin_b4: {nil, :none},
vitamin_b6: {nil, :none},
vitamin_b9: {nil, :none},
vitamin_c: {nil, :none},
vitamin_d: {nil, :none},
vitamin_e: {nil, :none},
vitamin_k: {nil, :none}
}
}
iex>
{:ok,
%ExKcal.Products{
map: %{
%ExKcal.Product{
alcohols: %ExKcal.Alcohols{
ethanol: {nil, :none},
other: {nil, :none},
total: {nil, :none}
},
amount: {1.0, :kg},
brand: "",
carbs: %ExKcal.Carbs{
dietary_fiber: {nil, :none},
other: {nil, :none},
starch: {nil, :none},
sugars: {nil, :none},
total: {nil, :none}
},
description: "",
fats: %ExKcal.Fats{
monounsaturated: {nil, :none},
polyunsaturated: {nil, :none},
saturated: {nil, :none},
total: {40.0, :kg}
},
kcal: 3010.0,
minerals: %ExKcal.Minerals{
calcium: {nil, :none},
chloride: {nil, :none},
chromium: {nil, :none},
copper: {nil, :none},
fluoride: {nil, :none},
iodide: {nil, :none},
iodine: {nil, :none},
iron: {nil, :none},
magnesium: {nil, :none},
manganese: {nil, :none},
molybdenum: {nil, :none},
phosphorus: {nil, :none},
potassium: {nil, :none},
selenium: {nil, :none},
sodium: {nil, :none},
sulfur: {nil, :none},
zinc: {nil, :none}
},
name: "strange apple",
note: "",
origin: [],
produced: [],
producer: "",
proteins: {nil, :none},
salt: {nil, :none},
vitamins: %ExKcal.Vitamins{
choline: {nil, :none},
vitamin_a: {nil, :none},
vitamin_b1: {nil, :none},
vitamin_b12: {nil, :none},
vitamin_b2: {nil, :none},
vitamin_b3: {nil, :none},
vitamin_b4: {nil, :none},
vitamin_b6: {nil, :none},
vitamin_b9: {nil, :none},
vitamin_c: {nil, :none},
vitamin_d: {nil, :none},
vitamin_e: {nil, :none},
vitamin_k: {nil, :none}
}
} => nil
}
}}
iex> step1 = %RecipeStep{time: %RecipeTime{minutes: 5, seconds: 10},
...> instructions: "wash in cold water", products: products}
%ExKcal.Recipe.Step{
instructions: "wash in cold water",
notes: "",
products: %ExKcal.Products{
map: %{
%ExKcal.Product{
alcohols: %ExKcal.Alcohols{
ethanol: {nil, :none},
other: {nil, :none},
total: {nil, :none}
},
amount: {1.0, :kg},
brand: "",
carbs: %ExKcal.Carbs{
dietary_fiber: {nil, :none},
other: {nil, :none},
starch: {nil, :none},
sugars: {nil, :none},
total: {nil, :none}
},
description: "",
fats: %ExKcal.Fats{
monounsaturated: {nil, :none},
polyunsaturated: {nil, :none},
saturated: {nil, :none},
total: {40.0, :kg}
},
kcal: 3010.0,
minerals: %ExKcal.Minerals{
calcium: {nil, :none},
chloride: {nil, :none},
chromium: {nil, :none},
copper: {nil, :none},
fluoride: {nil, :none},
iodide: {nil, :none},
iodine: {nil, :none},
iron: {nil, :none},
magnesium: {nil, :none},
manganese: {nil, :none},
molybdenum: {nil, :none},
phosphorus: {nil, :none},
potassium: {nil, :none},
selenium: {nil, :none},
sodium: {nil, :none},
sulfur: {nil, :none},
zinc: {nil, :none}
},
name: "strange apple",
note: "",
origin: [],
produced: [],
producer: "",
proteins: {nil, :none},
salt: {nil, :none},
vitamins: %ExKcal.Vitamins{
choline: {nil, :none},
vitamin_a: {nil, :none},
vitamin_b1: {nil, :none},
vitamin_b12: {nil, :none},
vitamin_b2: {nil, :none},
vitamin_b3: {nil, :none},
vitamin_b4: {nil, :none},
vitamin_b6: {nil, :none},
vitamin_b9: {nil, :none},
vitamin_c: {nil, :none},
vitamin_d: {nil, :none},
vitamin_e: {nil, :none},
vitamin_k: {nil, :none}
}
} => nil
}
},
time: %ExKcal.Recipe.Time{hours: 0, minutes: 5, seconds: 10}
}
iex> step2 = %RecipeStep{time: %RecipeTime{hours: 1}, instructions: "cook on medium heat"}
%ExKcal.Recipe.Step{
instructions: "cook on medium heat",
notes: "",
products: %ExKcal.Products{map: %{}},
time: %ExKcal.Recipe.Time{hours: 1, minutes: 0, seconds: 0}
}
iex>
%ExKcal.Recipe{
steps: [
%ExKcal.Recipe.Step{
instructions: "wash in cold water",
notes: "",
products: %ExKcal.Products{
map: %{
%ExKcal.Product{
alcohols: %ExKcal.Alcohols{
ethanol: {nil, :none},
other: {nil, :none},
total: {nil, :none}
},
amount: {1.0, :kg},
brand: "",
carbs: %ExKcal.Carbs{
dietary_fiber: {nil, :none},
other: {nil, :none},
starch: {nil, :none},
sugars: {nil, :none},
total: {nil, :none}
},
description: "",
fats: %ExKcal.Fats{
monounsaturated: {nil, :none},
polyunsaturated: {nil, :none},
saturated: {nil, :none},
total: {40.0, :kg}
},
kcal: 3010.0,
minerals: %ExKcal.Minerals{
calcium: {nil, :none},
chloride: {nil, :none},
chromium: {nil, :none},
copper: {nil, :none},
fluoride: {nil, :none},
iodide: {nil, :none},
iodine: {nil, :none},
iron: {nil, :none},
magnesium: {nil, :none},
manganese: {nil, :none},
molybdenum: {nil, :none},
phosphorus: {nil, :none},
potassium: {nil, :none},
selenium: {nil, :none},
sodium: {nil, :none},
sulfur: {nil, :none},
zinc: {nil, :none}
},
name: "strange apple",
note: "",
origin: [],
produced: [],
producer: "",
proteins: {nil, :none},
salt: {nil, :none},
vitamins: %ExKcal.Vitamins{
choline: {nil, :none},
vitamin_a: {nil, :none},
vitamin_b1: {nil, :none},
vitamin_b12: {nil, :none},
vitamin_b2: {nil, :none},
vitamin_b3: {nil, :none},
vitamin_b4: {nil, :none},
vitamin_b6: {nil, :none},
vitamin_b9: {nil, :none},
vitamin_c: {nil, :none},
vitamin_d: {nil, :none},
vitamin_e: {nil, :none},
vitamin_k: {nil, :none}
}
} => nil
}
},
time: %ExKcal.Recipe.Time{hours: 0, minutes: 5, seconds: 10}
},
%ExKcal.Recipe.Step{
instructions: "cook on medium heat",
notes: "",
products: %ExKcal.Products{map: %{}},
time: %ExKcal.Recipe.Time{hours: 1, minutes: 0, seconds: 0}
}
]
}
iex>
%ExKcal.Product{
alcohols: %ExKcal.Alcohols{
ethanol: {nil, :none},
other: {nil, :none},
total: {nil, :none}
},
amount: {1.0, :kg},
brand: "",
carbs: %ExKcal.Carbs{
dietary_fiber: {nil, :none},
other: {nil, :none},
starch: {nil, :none},
sugars: {nil, :none},
total: {nil, :none}
},
description: "",
fats: %ExKcal.Fats{
monounsaturated: {nil, :none},
polyunsaturated: {nil, :none},
saturated: {nil, :none},
total: {40.0, :kg}
},
kcal: 3010.0,
minerals: %ExKcal.Minerals{
calcium: {nil, :none},
chloride: {nil, :none},
chromium: {nil, :none},
copper: {nil, :none},
fluoride: {nil, :none},
iodide: {nil, :none},
iodine: {nil, :none},
iron: {nil, :none},
magnesium: {nil, :none},
manganese: {nil, :none},
molybdenum: {nil, :none},
phosphorus: {nil, :none},
potassium: {nil, :none},
selenium: {nil, :none},
sodium: {nil, :none},
sulfur: {nil, :none},
zinc: {nil, :none}
},
name: "",
note: "",
origin: [],
produced: [],
producer: "",
proteins: {nil, :none},
salt: {nil, :none},
vitamins: %ExKcal.Vitamins{
choline: {nil, :none},
vitamin_a: {nil, :none},
vitamin_b1: {nil, :none},
vitamin_b12: {nil, :none},
vitamin_b2: {nil, :none},
vitamin_b3: {nil, :none},
vitamin_b4: {nil, :none},
vitamin_b6: {nil, :none},
vitamin_b9: {nil, :none},
vitamin_c: {nil, :none},
vitamin_d: {nil, :none},
vitamin_e: {nil, :none},
vitamin_k: {nil, :none}
}
}
iex>
%ExKcal.Recipe.Time{hours: 1, minutes: 5, seconds: 10}
```
## Docs
Check [at Hex](https://hexdocs.pm/ex_kcal).