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