Current section

Files

Jump to
elx_validation lib rules boolean.ex
Raw

lib/rules/boolean.ex

defmodule ElxValidation.Boolean do
@moduledoc """
### boolean
- The field under validation must be able to be cast as a boolean. Accepted input are true, false, 1, 0, "1", and "0".
```
data = %{
is_ok1: "true",
is_ok2: true,
is_ok3: "false",
is_ok4: false,
is_ok5: 0,
is_ok6: 1,
is_ok7: "0",
is_ok8: "1",
is_ok9: "yes", ---> return error
}
rules = [
%{
field: "is_ok1",
validate: ["boolean"]
},
%{
field: "is_ok2",
validate: ["boolean"]
},
%{
field: "is_ok3",
validate: ["boolean"]
},
%{
field: "is_ok4",
validate: ["boolean"]
},
%{
field: "is_ok5",
validate: ["boolean"]
},
%{
field: "is_ok6",
validate: ["boolean"]
},
%{
field: "is_ok7",
validate: ["boolean"]
},
%{
field: "is_ok8",
validate: ["boolean"]
},
%{
field: "is_ok9",
validate: ["boolean"]
},
]
```
"""
@doc """
Boolean data : true , "true" , false ,"false" , 1 , "1" , 0 or "0"
"""
def validate_boolean(target) do
cond do
is_boolean(target) -> true
target == "true" -> true
target == "false" -> true
target == 1 || target == "1" -> true
target == 0 || target == "0" -> true
true -> false
end
rescue
_ ->
false
end
end