Exonerate

A JSONSchema -> Elixir macro

Currently supports JSONSchema draft 0.7. except:

Works in progress:

Note:

String formatting included:

Installation

Add the following lines to your mix.exs

defp deps do
[
{:exonerate, "~> 0.1", runtime: false},
]
end

Quick Start

defmodule SchemaModule do
require Exonerate
@doc """
validates our input
"""
Exonerate.function_from_string(:def, :validate_input, """
{
"type":"object",
"properties":{
"parameter":{"type":"integer"}
}
}
""")
end
iex> SchemaModule.validate_input("some string")
{:error, schema_pointer: "#", error_value: "some string", json_pointer: "#/parameter"}}
iex> SchemaModule.validate_input(%{"parameter" => "2"})
{:error, schema_pointer: "#/properties/parameter", error_value: "2", json_pointer: "#/parameter"}}
iex> SchemaModule.validate_input(%{"parameter" => 2})
:ok