Packages

A plug for hierarchical data submit with arbitrary number of files embedded in.

Current section

Files

Jump to
saxon lib parsers integer.ex
Raw

lib/parsers/integer.ex

defmodule Saxon.Parsers.INTEGER do
defstruct buffer: [], attributes: %{}
def new(attributes \\ %{}), do: %__MODULE__{attributes: attributes}
def update(%__MODULE__{buffer: buffer} = parser, chunk) do
%{parser | buffer: [buffer, chunk]}
end
def parse(%__MODULE__{buffer: buffer, attributes: attributes}) do
buffer = buffer |> IO.iodata_to_binary() |> String.trim()
parse(buffer, attributes)
end
defp parse("", attributes) do
{:ok, nil, attributes}
end
defp parse(buffer, attributes) do
try do
result = buffer |> String.to_integer()
{:ok, result, attributes}
rescue
_ -> {:error, :invalid_format, buffer}
end
end
end