Current section

Files

Jump to
server_utils lib parsers integer_parser.ex
Raw

lib/parsers/integer_parser.ex

defmodule ServerUtils.Parsers.IntegerParser do
@moduledoc """
Module to simplify the parsing of an Integer value.
It provides a bang! function that will raise an error if the parsing failed.
"""
@doc """
Parses an integer value.
It returns the integer value or throws an error if something failed.
## Examples
iex> ServerUtils.Parsers.IntegerParser.parse_integer!("23")
23
iex> ServerUtils.Parsers.IntegerParser.parse_integer!(23)
23
iex> ServerUtils.Parsers.IntegerParser.parse_integer!("abc")
** (RuntimeError) "Invalid integer: abc"
"""
@spec parse_integer!(String.t) :: integer()
def parse_integer!(value) when is_integer(value), do: value
def parse_integer!(value) do
case Integer.parse(value) do
:error -> raise "Invalid integer: #{inspect value}"
{value, _} -> value
end
end
@doc """
Parses an integer value.
It returns the integer value if succeed or the default value if something failed.
## Examples
iex> ServerUtils.Parsers.IntegerParser.parse_integer("23", 15)
23
iex> ServerUtils.Parsers.IntegerParser.parse_integer(23, 7)
23
iex> ServerUtils.Parsers.IntegerParser.parse_integer("abc", 5)
5
"""
@spec parse_integer(String.t, integer()) :: integer()
def parse_integer(value, _default) when is_integer(value), do: value
def parse_integer(value, default) do
case Integer.parse(value) do
:error -> default
{value, _} -> value
end
end
end