Skip to content

Commit 2ba15d4

Browse files
committed
optimize cast to move error_values option higher
1 parent 366af58 commit 2ba15d4

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

lib/construct/cast.ex

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,9 @@ defmodule Construct.Cast do
9999
params = convert_params(params)
100100
types = convert_types(types)
101101
permitted = Map.keys(types)
102+
error_values = Keyword.get(opts, :error_values, false)
102103

103-
case Enum.reduce(permitted, {%{}, %{}, true}, &process_param(&1, params, types, opts, &2)) do
104+
case Enum.reduce(permitted, {%{}, %{}, true}, &process_param(&1, params, types, error_values, opts, &2)) do
104105
{changes, _errors, true} -> {:ok, changes}
105106
{_changes, errors, false} -> {:error, errors}
106107
end
@@ -151,11 +152,11 @@ defmodule Construct.Cast do
151152
raise Construct.Error, "expected types to be a {key, value} structure, got: #{inspect(types)}"
152153
end
153154

154-
defp process_param(key, params, types, opts, {changes, errors, valid?}) do
155+
defp process_param(key, params, types, error_values, opts, {changes, errors, valid?}) do
155156
param_key = Atom.to_string(key)
156157
{type, type_opts} = type!(key, types)
157158

158-
case cast_field(param_key, type, type_opts, params, opts) do
159+
case cast_field(param_key, type, type_opts, params, error_values, opts) do
159160
{:ok, value} ->
160161
{Map.put(changes, key, value), errors, valid?}
161162

@@ -173,9 +174,8 @@ defmodule Construct.Cast do
173174
end
174175
end
175176

176-
defp cast_field(param_key, type, type_opts, params, opts) do
177+
defp cast_field(param_key, type, type_opts, params, error_values, opts) do
177178
default_value = Keyword.get(type_opts, :default, @default_value)
178-
error_values = Keyword.get(opts, :error_values, false)
179179

180180
case params do
181181
%{^param_key => value} when default_value != @default_value and value == default_value ->

0 commit comments

Comments
 (0)