[day-01] setup imc calc and route
This commit is contained in:
32
lib/wabanex/imc.ex
Normal file
32
lib/wabanex/imc.ex
Normal file
@@ -0,0 +1,32 @@
|
||||
defmodule Wabanex.IMC do
|
||||
def calculate(%{"filename" => filename}) do
|
||||
filename
|
||||
|> File.read()
|
||||
|> handle_file()
|
||||
end
|
||||
|
||||
defp handle_file({:ok, content}) do
|
||||
data =
|
||||
content
|
||||
|> String.trim()
|
||||
|> String.split("\n")
|
||||
|> Enum.map(&parse_line/1)
|
||||
|> Enum.into(%{})
|
||||
|
||||
{:ok, data}
|
||||
end
|
||||
|
||||
defp handle_file({:error, _reason}) do
|
||||
{:error, "Error while opening the file"}
|
||||
end
|
||||
|
||||
defp parse_line(line) do
|
||||
line
|
||||
|> String.split(",")
|
||||
|> List.update_at(1, &String.to_float/1)
|
||||
|> List.update_at(2, &String.to_float/1)
|
||||
|> calculate_imc()
|
||||
end
|
||||
|
||||
defp calculate_imc([name, height, weight]), do: {name, weight / :math.pow(height / 100, 2)}
|
||||
end
|
Reference in New Issue
Block a user