Current section

Files

Jump to
ex_rlp lib ex_rlp decode.ex
Raw

lib/ex_rlp/decode.ex

defmodule ExRLP.Decode do
@moduledoc false
alias ExRLP.DecodeItem
@spec decode(binary(), keyword()) :: ExRLP.t()
def decode(item, options \\ []) when is_binary(item) do
item
|> unencode(Keyword.get(options, :encoding, :binary))
|> DecodeItem.decode_item()
end
@spec unencode(binary(), atom()) :: binary()
defp unencode(value, :binary), do: value
defp unencode(value, :hex), do: decode_hex(value)
@spec decode_hex(binary()) :: binary()
defp decode_hex(binary) do
Base.decode16!(binary, case: :lower)
end
end