lib/abi/util.ex
defmodule ABI.Util do
def split_method_id(<<method_id::binary-size(4), rest::binary>>) do
{:ok, method_id, rest}
end
def split_method_id(_) do
{:error, :invalid_data}
end
def find_selector_by_method_id(function_selectors, method_id_target) do
function_selector =
Enum.find(function_selectors, fn %{method_id: method_id} ->
method_id == method_id_target
end)
if function_selector do
{:ok, function_selector}
else
{:error, :no_matching_function}
end
end
end