Current section

Files

Jump to
parameter lib parameter types float.ex
Raw

lib/parameter/types/float.ex

defmodule Parameter.Types.Float do
@moduledoc """
Float parameter type
"""
use Parameter.Parametrizable
@impl true
def load(value) when is_float(value) do
{:ok, value}
end
def load(value) when is_binary(value) do
case Float.parse(value) do
{float, ""} -> {:ok, float}
_error -> error_tuple()
end
end
def load(value) when is_integer(value) do
{:ok, value / 1}
end
def load(_value) do
error_tuple()
end
@impl true
def validate(value) when is_float(value) do
:ok
end
def validate(_value) do
error_tuple()
end
defp error_tuple, do: {:error, "invalid float type"}
end