32 lines
759 B
Elixir
32 lines
759 B
Elixir
defmodule KitchenCalculator do
|
|
def get_volume(volume_pair) do
|
|
elem(volume_pair, 1)
|
|
end
|
|
|
|
def to_milliliter(volume_pair) do
|
|
volume = get_volume(volume_pair)
|
|
case elem(volume_pair, 0) do
|
|
:milliliter -> volume
|
|
:fluid_ounce -> 30 * volume
|
|
:cup -> 240 * volume
|
|
:teaspoon -> 5 * volume
|
|
:tablespoon -> 15 * volume
|
|
_ -> -1
|
|
end
|
|
end
|
|
|
|
def from_milliliter({:milliliter, volume}, unit) do
|
|
case unit do
|
|
:cup -> volume / 240
|
|
:fluid_ounce -> volume / 30
|
|
:teaspoon -> volume / 5
|
|
:tablespoon -> volume / 15
|
|
_ -> volume
|
|
end
|
|
end
|
|
|
|
def convert({unit1, volume}, unit2) do
|
|
from_milliliter({:milliliter, to_milliliter({unit1, volume})}, unit2)
|
|
end
|
|
end
|