Some checks reported errors
continuous-integration/drone/push Build encountered an error
Mainly add module docs and fix some aliases.
33 lines
728 B
Elixir
33 lines
728 B
Elixir
defmodule Wabanex.IMC do
|
|
@moduledoc """
|
|
Body mass index calculation
|
|
"""
|
|
|
|
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
|