Packages

Norm is a system for specifying the structure of data. It can be used for validation and for generation of data. Norm does not provide any set of predicates and instead allows you to re-use any of your existing validations.

Current section

Files

Jump to
norm lib norm generator.ex
Raw

lib/norm/generator.ex

defmodule Norm.Generator do
@moduledoc false
# This module provides a wrapper struct for overriding generators of the other
# conformable and generatable types.
defstruct ~w|conformer generator|a
def new(conformer, generator) do
%__MODULE__{conformer: conformer, generator: generator}
end
defimpl Norm.Conformer.Conformable do
# We just pass the conformer through here. We don't need to be involved.
def conform(%{conformer: c}, input, path) do
Norm.Conformer.Conformable.conform(c, input, path)
end
end
defimpl Norm.Generatable do
def gen(%{generator: gen}) do
if gen == :null do
raise Norm.GeneratorLibraryError
else
{:ok, gen}
end
end
end
end