Transforms raw JSON Schema maps into executable Schema structs.
Compilation has two phases:
- Node compilation — Recursively converts keywords into
Rulestructs (serializable rule descriptors), resolves vocabularies, and compiles$defs. - Scope scanning — Discovers all
$idand anchor definitions across the schema tree and registers them by absolute URI for reference resolution.
Standard rules execute first; finalizer rules (unevaluatedProperties,
unevaluatedItems) run last so they can see which keys were already evaluated.
Examples
iex> {:ok, schema} = JSONSchex.Compiler.compile(%{"type" => "string"})
iex> length(schema.rules)
1
Summary
Functions
Bundles a JSON Schema fragment into a standalone raw schema document.
Compiles a raw JSON Schema into an executable Schema struct.
Compiles a JSON Schema fragment from a containing document while preserving that document as the reference-resolution context.
Functions
@spec bundle_fragment( map() | boolean(), keyword() ) :: {:ok, map() | boolean()} | {:error, JSONSchex.Types.Error.t()}
Bundles a JSON Schema fragment into a standalone raw schema document.
Compiles a raw JSON Schema into an executable Schema struct.
See JSONSchex.compile/2 for options and usage.
@spec compile_fragment( map() | boolean(), keyword() ) :: {:ok, JSONSchex.Types.Schema.t()} | {:error, JSONSchex.Types.Error.t()}
Compiles a JSON Schema fragment from a containing document while preserving that document as the reference-resolution context.