ExParamsSchema.ValueCaster (ex_params_schema v0.1.0)

Copy Markdown View Source

正規化済みの型定義に従って、単一値、配列、object を再帰的に変換します。

ExParamsSchema.Parser と default 値のコンパイル処理が共有する低水準モジュールです。 通常の入力変換では ExParamsSchema.parse/2 を使用してください。

Summary

Functions

値を正規化済みの型へ変換します。

Types

cast_error_path()

@type cast_error_path() :: [ExParamsSchema.ValidationError.path_segment()]

detailed_cast_result()

@type detailed_cast_result() ::
  {:ok, ExParamsSchema.value()}
  | {:error,
     {path :: cast_error_path(), reason :: ExParamsSchema.error_reason()}
     | ExParamsSchema.ValidationError.t()}

field_cast_result()

@type field_cast_result() ::
  {:ok, name :: atom(), value :: ExParamsSchema.value()}
  | {:error,
     {path :: cast_error_path(), reason :: ExParamsSchema.error_reason()}
     | ExParamsSchema.ValidationError.t()}

Functions

cast(value, type, options, reason)

値を正規化済みの型へ変換します。

iex> ExParamsSchema.ValueCaster.cast(["1", 2], {:array, :integer, []}, [], :invalid_items)
{:ok, [1, 2]}

iex> fields = ExParamsSchema.Definition.compile_fields!([{:count, :integer, []}])
iex> ExParamsSchema.ValueCaster.cast(%{"count" => "3"}, {:object, fields}, [], :invalid_payload)
{:ok, %{count: 3}}

nullable: truenil はそのまま返します。変換できない場合は指定されたエラー理由へ 正規化します。

iex> ExParamsSchema.ValueCaster.cast(nil, :integer, [nullable: true], :invalid_count)
{:ok, nil}
iex> ExParamsSchema.ValueCaster.cast("x", :integer, [], :invalid_count)
{:error, :invalid_count}