正規化済みの型定義に従って、単一値、配列、object を再帰的に変換します。
ExParamsSchema.Parser と default 値のコンパイル処理が共有する低水準モジュールです。
通常の入力変換では ExParamsSchema.parse/2 を使用してください。
Summary
Functions
値を正規化済みの型へ変換します。
Types
@type cast_error_path() :: [ExParamsSchema.ValidationError.path_segment()]
@type detailed_cast_result() :: {:ok, ExParamsSchema.value()} | {:error, {path :: cast_error_path(), reason :: ExParamsSchema.error_reason()} | ExParamsSchema.ValidationError.t()}
@type field_cast_result() :: {:ok, name :: atom(), value :: ExParamsSchema.value()} | {:error, {path :: cast_error_path(), reason :: ExParamsSchema.error_reason()} | ExParamsSchema.ValidationError.t()}
Functions
@spec cast( ExParamsSchema.value(), ExParamsSchema.Definition.Field.normalized_type(), ExParamsSchema.field_options(), ExParamsSchema.error_reason() ) :: ExParamsSchema.Caster.cast_result()
値を正規化済みの型へ変換します。
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: true の nil はそのまま返します。変換できない場合は指定されたエラー理由へ
正規化します。
iex> ExParamsSchema.ValueCaster.cast(nil, :integer, [nullable: true], :invalid_count)
{:ok, nil}
iex> ExParamsSchema.ValueCaster.cast("x", :integer, [], :invalid_count)
{:error, :invalid_count}