Packages
evision
0.1.8
1.0.1-rc.0
1.0.0
1.0.0-rc.0
0.2.17
0.2.17-rc2
0.2.17-rc1
0.2.16
0.2.16-pre.2
0.2.16-pre
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.2-rc2
0.2.1
0.2.0
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
retired
0.1.31
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
0.1.26-rc3
0.1.26-rc2
0.1.26-rc1
0.1.26-rc0
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
OpenCV-Erlang/Elixir binding.
Current section
Files
Jump to
Current section
Files
lib/errorize.ex
defmodule Evision.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} ->
if is_struct(res) do
res
else
Evision.Internal.Structurise.to_struct(res)
end
{:error, message} when is_list(message) -> raise List.to_string(message)
{:error, message} when is_binary(message) -> raise message
res when is_struct(res) -> res
res -> Evision.Internal.Structurise.to_struct(res)
end
end
end
end
end