defmodule TehamaClient.Object do @spec parse_i(any, any) :: integer() def parse_i(v, default \\ -1) def parse_i(nil, default), do: default def parse_i(v, default) when is_binary(v) do with {i, _} <- Integer.parse(v) do i else _ -> default end end def parse_i(v, _default) when is_number(v) do round(v) end def parse_i(_, default) do default end @spec parse_f(any, any) :: float() def parse_f(v, default \\ -1.0) def parse_f(nil, default), do: default def parse_f(v, default) when is_binary(v) do with {f, _} <- Float.parse(v) do f else _ -> default end end def parse_f(v, _default) when is_number(v) do v end def parse_f(_, default) do default end end