ExParamsSchema.Parser (ex_params_schema v0.1.0)

Copy Markdown View Source

コンパイル済みスキーマに対するパラメーターの変換・検証を実行します。

ExParamsSchema.parse/2 と、use ExParamsSchema が生成する parse/1 の実装を支える 低水準モジュールです。通常は公開 API を使用してください。

Summary

Functions

コンパイル済みスキーマを使い、入力 map を変換・検証します。

変換結果を指定した構造体へ格納して返します。

入力 map を変換・検証し、失敗時にはパスと制約を含むエラーを返します。

入力 map を変換・検証し、結果を指定した構造体へ格納して返します。

Types

detailed_parse_result()

@type detailed_parse_result() :: ExParamsSchema.detailed_parse_result()

map_parse_result()

@type map_parse_result() :: ExParamsSchema.parse_result()

struct_parse_result()

@type struct_parse_result() ::
  {:ok, params :: struct()} | {:error, reason :: ExParamsSchema.error_reason()}

Functions

parse(params, schema)

コンパイル済みスキーマを使い、入力 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}

parse(params, module, schema)

変換結果を指定した構造体へ格納して返します。

通常は use ExParamsSchema により生成される parse/1 を使用します。

parse_detailed(params, schema)

@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}

parse_detailed(params, module, schema)

@spec parse_detailed(term(), module(), ExParamsSchema.Schema.t()) ::
  {:ok, struct()} | {:error, [ExParamsSchema.validation_error()]}

入力 map を変換・検証し、結果を指定した構造体へ格納して返します。

通常は use ExParamsSchema により生成される parse_detailed/1 を使用します。