exercism-elixir/kitchen-calculator/lib/kitchen_calculator.ex
2022-01-31 09:28:22 -04:00

44 lines
1.1 KiB
Elixir

defmodule KitchenCalculator do
def get_volume(volume_pair) do
case volume_pair do
{:cup, 1} -> 1
{:fluid_ounce, 2} -> 2
{:teaspoon, 3} -> 3
{:tablespoon, 4} -> 4
{:milliliter, 5} -> 5
end
end
def to_milliliter(volume_pair) do
case volume_pair do
{:milliliter, x} -> {:milliliter, x}
{:cup, x} -> {:milliliter, 240 * x}
{:fluid_ounce, x} -> {:milliliter, 30 * x}
{:teaspoon, x} -> {:milliliter, 5 * x}
{:tablespoon, x} -> {:milliliter, 15 * x}
end
end
def from_milliliter(volume_pair, unit) do
{_, x} = volume_pair
case unit do
:milliliter -> volume_pair
:cup -> {unit, x / 240}
:fluid_ounce -> {unit, x / 30}
:teaspoon -> {unit, x / 5}
:tablespoon -> {unit, x / 15}
end
end
def convert(volume_pair, unit) do
{from, x} = volume_pair
case {from, unit} do
{:teaspoon, :tablespoon} -> {unit, x / 3}
{:cup, :fluid_ounce} -> {unit, x * 8}
{:fluid_ounce, :teaspoon} -> {unit, x * 6}
{:tablespoon, :cup} -> {unit, x / 16}
end
end
end