Optimal (optimal v0.3.7)

View Source

Documentation for Optimal.

Summary

Types

error()

@type error() :: {atom(), String.t()}

schema()

@type schema() :: Optimal.Schema.t()

validation_result()

@type validation_result() :: {:ok, Keyword.t()} | {:error, [error()]}

Functions

document(schema)

See Optimal.Doc.document/1.

document(schema, opts)

See Optimal.Doc.document/2

merge(left, right)

See Optimal.Schema.merge/2

merge(left, right, opts)

See Optimal.Schema.merge/3.

schema()

See Optimal.Schema.new/0.

schema(opts)

See Optimal.Schema.new/1

validate(opts, schema)

@spec validate(opts :: Keyword.t(), schema :: Optimal.Schema.t()) ::
  {:ok, Keyword.t()} | {:error, [error()]}

validate!(opts, schema)

@spec validate!(opts :: Keyword.t(), schema :: schema()) :: Keyword.t() | no_return()

Validates opts according to a schema or the constructor for a schema. Raises on invalid opts.

iex> Optimal.validate!([reticulate_splines?: true], opts: [:reticulate_splines?])
[reticulate_splines?: true]
iex> Optimal.validate!([reticulate_splines?: true], opts: [:load_textures?], extra_keys?: true)
[reticulate_splines?: true]
iex> schema = Optimal.schema(opts: [:reticulate_splines?], required: [:reticulate_splines?], extra_keys?: true)
...> Optimal.validate!([reticulate_splines?: true, hack_interwebs?: true], schema)
[reticulate_splines?: true, hack_interwebs?: true]
iex> Optimal.validate!([], opts: [:reticulate_splines?], required: [:reticulate_splines?])
** (ArgumentError) Opt Validation Error: reticulate_splines? - is required