Current section
Files
Jump to
Current section
Files
lib/errorize.ex
defmodule TFLiteElixir.Errorize do
@moduledoc false
# Original version by José
# https://gist.github.com/josevalim/7a5ed50ed86a2260d907603ca8223448
# modified a tiny bit by Cocoa
defmacro deferror(fun) do
{name, args} = Macro.decompose_call(fun)
doc = """
Raising version of `#{name}/#{length(args)}`.
"""
quote do
@doc unquote(doc)
def unquote(:"#{name}!")(unquote_splicing(args)) do
case unquote(fun) do
{:ok, res} -> res
{:error, message} when is_list(message) -> raise List.to_string(message)
{:error, message} when is_binary(message) -> raise message
res -> res
end
end
end
end
end