WPL.Validator (WPL Validator v1.6.6)

Copy Markdown View Source

Validates compiled WPL JSON against the canonical schema and semantic invariants.

Two passes:

  1. JSON Schema validation (Draft 2020-12).
  2. Semantic invariants (duplicate-id detection, ref resolution, prescription validity, etc.) — only runs if Pass 1 passes.

Usage

{:ok, plan} = Jason.decode(json_string)
result = WPL.Validator.validate(plan)

if result.valid? do
  IO.puts("ok")
else
  for err <- result.errors, do: IO.inspect(err)
end

See WPL.Validator.Error and WPL.Validator.Result for return shapes.

Summary

Types

catalog()

@type catalog() :: %{
  optional(:exercises) => MapSet.t(String.t()),
  optional(:meals) => MapSet.t(String.t()),
  optional(:meditations) => MapSet.t(String.t())
}

opts()

@type opts() :: [{:catalog, catalog()}]

Functions

validate(input, opts \\ [])

@spec validate(any(), opts()) :: WPL.Validator.Result.t()