コンパイル済みスキーマに対するパラメーターの変換・検証を実行します。
ExParamsSchema.parse/2 と、use ExParamsSchema が生成する parse/1 の実装を支える
低水準モジュールです。通常は公開 API を使用してください。
Summary
Functions
コンパイル済みスキーマを使い、入力 map を変換・検証します。
変換結果を指定した構造体へ格納して返します。
入力 map を変換・検証し、失敗時にはパスと制約を含むエラーを返します。
入力 map を変換・検証し、結果を指定した構造体へ格納して返します。
Types
@type detailed_parse_result() :: ExParamsSchema.detailed_parse_result()
@type map_parse_result() :: ExParamsSchema.parse_result()
@type struct_parse_result() :: {:ok, params :: struct()} | {:error, reason :: ExParamsSchema.error_reason()}
Functions
@spec parse(map(), ExParamsSchema.Schema.t()) :: map_parse_result()
コンパイル済みスキーマを使い、入力 map を変換・検証します。
iex> schema = ExParamsSchema.compile!(%{count: {:integer, minimum: 1}})
iex> ExParamsSchema.Parser.parse(%{"count" => "2"}, schema)
{:ok, %{count: 2}}
iex> schema = ExParamsSchema.compile!(%{count: {:integer, minimum: 1}})
iex> ExParamsSchema.Parser.parse([], schema)
{:error, :invalid_params}
@spec parse(term(), module(), ExParamsSchema.Schema.t()) :: struct_parse_result()
変換結果を指定した構造体へ格納して返します。
通常は use ExParamsSchema により生成される parse/1 を使用します。
@spec parse_detailed(map(), ExParamsSchema.Schema.t()) :: detailed_parse_result()
入力 map を変換・検証し、失敗時にはパスと制約を含むエラーを返します。
iex> schema = ExParamsSchema.compile!(%{count: {:integer, minimum: 1, error: :invalid_count}})
iex> {:error, [error]} = ExParamsSchema.Parser.parse_detailed(%{"count" => "0"}, schema)
iex> {error.path, error.keyword, error.reason}
{["count"], :minimum, :invalid_count}
@spec parse_detailed(term(), module(), ExParamsSchema.Schema.t()) :: {:ok, struct()} | {:error, [ExParamsSchema.validation_error()]}
入力 map を変換・検証し、結果を指定した構造体へ格納して返します。
通常は use ExParamsSchema により生成される parse_detailed/1 を使用します。