Skip to content

Commit ca5f003

Browse files
committed
feat: include boolean rule
1 parent 5bfd251 commit ca5f003

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

lib/validator/rules.ex

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1015,11 +1015,31 @@ defmodule Request.Validator.Rules do
10151015
&validator_fn.(keys, &1, &2)
10161016
end
10171017

1018+
@doc """
1019+
## Examples
1020+
1021+
iex> import Request.Validator.Rules, only: [boolean: 0]
1022+
iex> fun = boolean()
1023+
iex> fun.("notify_me", true)
1024+
:ok
1025+
iex> fun.("notify_me", 2)
1026+
{:error, "The notify_me field must be true or false."}
1027+
"""
1028+
def boolean do
1029+
acceptables = [true, false, "1", "0", 1, 0]
1030+
1031+
fn attr, value ->
1032+
message = gettext("The %{attribute} field must be true or false.", attribute: attr)
1033+
1034+
check(value in acceptables, message)
1035+
end
1036+
end
1037+
10181038
defp diff_keys_empty?(map, keys) when is_map(map) and is_list(keys) do
10191039
map
10201040
|> Map.keys()
10211041
|> MapSet.new()
1022-
|> MapSet.symmetric_difference(MapSet.new(keys))
1042+
|> MapSet.difference(MapSet.new(keys))
10231043
|> Enum.empty?()
10241044
end
10251045

0 commit comments

Comments
 (0)