lib/errors.ex
defmodule Matcher.Errors do
def build_error(module, context, extras) do
{:error,
Map.merge(
%{
module: module,
path: context.path
},
Map.new(extras)
)}
end
defmacro error(context, extras) do
quote do
Matcher.Errors.build_error(__MODULE__, unquote(context), unquote(extras))
end
end
def expected(value) do
IO.ANSI.format([:green, :bright, inspect(value)])
end
def mismatched(value) do
IO.ANSI.format([:red, :bright, inspect(value)])
end
end