正規化済みフィールド、JSON Schema、検証用データをまとめるコンパイル済みスキーマです。
ExParamsSchema.compile!/2 が生成します。構造体の内部表現と直接操作用の関数は将来変更する
可能性があるため、通常は ExParamsSchema の公開 API を使用してください。
Summary
Functions
コンパイル済みフィールドを実行時に再利用できるスキーマへコンパイルします。
JSON Pointer に対応する宣言順とエラー理由を返します。
コンパイル済みスキーマまたはコンパイル済みフィールドから JSON Schema Draft 7 を返します。
フィールド定義を渡した場合は、後方互換性のため Definition.compile_fields!/1 へ委譲します。
JSON Pointer に対応する宣言順、エラー理由、解決後のパスを返します。
変換済みの値を JSON Schema が検証できる値へ変換します。
Types
@type error_definition() :: {pattern :: ExParamsSchema.Schema.JsonPointer.pattern(), error_reason :: ExParamsSchema.error_reason(), order :: non_neg_integer()}
@type error_reference() :: {order :: non_neg_integer(), error_reason :: ExParamsSchema.error_reason()}
@type resolved_error_path() :: {order :: non_neg_integer(), error_reason :: ExParamsSchema.error_reason(), path :: ExParamsSchema.Schema.JsonPointer.resolved_path()}
@type t() :: %ExParamsSchema.Schema{ errors: [error_definition()], fields: [ExParamsSchema.Definition.Field.t()], json_schema: map(), resolved: ExJsonSchema.Schema.Root.t(), strict: boolean() }
Functions
@spec compile!( [ExParamsSchema.field()] | [ExParamsSchema.Definition.Field.t()], boolean() ) :: t()
コンパイル済みフィールドを実行時に再利用できるスキーマへコンパイルします。
フィールド定義の検証とコンパイルは ExParamsSchema.Definition が担います。通常は
map 形式の定義を受け付ける ExParamsSchema.compile!/2 を使用してください。
後方互換性のためフィールド定義も受け付けますが、Definition.compile_fields!/1 へ委譲します。
iex> fields = ExParamsSchema.Definition.compile_fields!([{:count, :integer, [minimum: 1]}])
iex> schema = ExParamsSchema.Schema.compile!(fields)
iex> schema.strict
false
iex> get_in(schema.json_schema, ["properties", "count"])
%{"minimum" => 1, "type" => "integer"}
@spec error_for_path(t(), String.t()) :: error_reference() | nil
JSON Pointer に対応する宣言順とエラー理由を返します。
@spec json_schema(t(), boolean() | nil) :: map()
@spec json_schema( [ExParamsSchema.field()] | [ExParamsSchema.Definition.Field.t()], boolean() | nil ) :: map()
コンパイル済みスキーマまたはコンパイル済みフィールドから JSON Schema Draft 7 を返します。
フィールド定義を渡した場合は、後方互換性のため Definition.compile_fields!/1 へ委譲します。
コンパイル済みスキーマに strict を指定した場合は、その指定に合わせて JSON Schema を
再生成します。指定を省略した場合は、コンパイル時に生成した JSON Schema を返します。
iex> fields = ExParamsSchema.Definition.compile_fields!([{:name, :string, []}])
iex> ExParamsSchema.Schema.json_schema(fields)["required"]
["name"]
@spec resolve_error_path(t(), String.t()) :: resolved_error_path() | nil
JSON Pointer に対応する宣言順、エラー理由、解決後のパスを返します。
変換済みの値を JSON Schema が検証できる値へ変換します。
iex> fields = ExParamsSchema.Definition.compile_fields!([{:published_on, :date, []}])
iex> schema = ExParamsSchema.Schema.compile!(fields)
iex> ExParamsSchema.Schema.validation_data(schema, %{published_on: ~D[2026-07-23]})
%{"published_on" => "2026-07-23"}