View Source Dsv.None (Dsv v0.1.1)
Dsv.None
validator provides a functions to check that there is no element on the provided List
or String
that meets any of the provided criteria.
Validate other types of data
To validate arguments of other data types
FindAll
protocol must be implemented for this type.
Summary
Functions
Ensure that none of the validators pass the check for the given data.
Ensure that none of the validators pass the check for the given data and allow for custom error messages.
Functions
Ensure that none of the validators pass the check for the given data.
For a string, this validator iterates through all graphemes, checking if none of them pass validation for all provided validators. For a list, it iterates through all elements in the list, verifying that none of them pass the validation for all specified validators.
Returns :true
if all validators fail for all elements; otherwise, returns :false.
Example
iex> Dsv.None.valid?("abcd", format: ~r/^[a-z]$/, equal: "w")
:true
iex> Dsv.None.valid?("abcd", format: ~r/^[a-z]$/, equal: "a")
:false
iex> Dsv.None.valid?("abcd", format: ~r/^[a-d]$/, custom: &is_bitstring/1)
:false
iex> Dsv.None.valid?("abcd", format: ~r/^[a-c]$/, custom: &is_bitstring/1)
:false
iex> Dsv.None.valid?([1, 2, 3, "hello"], custom: &is_number/1, number: [gt: 2])
:false
iex> Dsv.None.valid?([1, 2, 3, "hello"], number: [gt: 0])
:false
iex> Dsv.None.valid?([1, 2, 3], custom: &is_number/1, number: [gte: 0, lte: 10])
:false
Ensure that none of the validators pass the check for the given data and allow for custom error messages.
For a string, this validator iterates through all graphemes, checking if none of them pass validation for all provided validators. For a list, it iterates through all elements in the list, verifying that none of them pass the validation for all specified validators.
Returns :ok
if all validators fail for all elements; otherwise, returns error ruple with the error message.
Options
- any validator name like
:format
:custom
:number
:length
:equal
:data
:message
- (EEx string) message used in error tuple in case of validation failure.
Example
iex> Dsv.None.validate("abcd", format: ~r/^[a-z]$/, equal: "w")
:ok
iex> Dsv.None.validate("abcd", format: ~r/^[a-z]$/, equal: "a")
{:error, "Not all elements match all validators."}
iex> Dsv.None.validate("abcd", format: ~r/^[a-d]$/, custom: &is_bitstring/1)
{:error, "Not all elements match all validators."}
iex> Dsv.None.validate("abcd", format: ~r/^[a-c]$/, custom: &is_bitstring/1)
{:error, "Not all elements match all validators."}
iex> Dsv.None.validate([1, 2, 3, "hello"], custom: &is_number/1, number: [gt: 2])
{:error, "Not all elements match all validators."}
iex> Dsv.None.validate([1, 2, 3, "hello"], number: [gt: 0])
{:error, "Not all elements match all validators."}
iex> Dsv.None.validate([1, 2, 3], custom: &is_number/1, number: [gte: 0, lte: 10])
{:error, "Not all elements match all validators."}
iex> Dsv.None.validate([1, 2, 3, "hello"], number: [gt: 0], format: ~r/^[a-z]$/)
{:error, "Not all elements match all validators."}
Example with custom message
iex> Dsv.None.validate("abcd", format: ~r/^[a-z]$/, equal: "w", message: "All elements must be small letter 'w'.")
:ok
iex> Dsv.None.validate("abcd", format: ~r/^[a-z]$/, equal: "a", message: "All elements must be small letter 'a'.")
{:error, "All elements must be small letter 'a'."}
iex> Dsv.None.validate("abcd", format: ~r/^[a-d]$/, custom: &is_bitstring/1, message: "All elements must be one of the letter: 'a', 'b', 'c', 'd'.")
{:error, "All elements must be one of the letter: 'a', 'b', 'c', 'd'."}
iex> Dsv.None.validate("abcd", format: ~r/^[a-c]$/, custom: &is_bitstring/1, message: "All elements must be one of the letter: 'a', 'b', 'c'.")
{:error, "All elements must be one of the letter: 'a', 'b', 'c'."}
iex> Dsv.None.validate([1, 2, 3, "hello"], custom: &is_number/1, number: [gt: 2], message: "All values must be a number greater that 2.")
{:error, "All values must be a number greater that 2."}
iex> Dsv.None.validate([1, 2, 3, "hello"], number: [gt: 0], message: "All values must be a number greater that 0.")
{:error, "All values must be a number greater that 0."}
iex> Dsv.None.validate([1, 2, 3], custom: &is_number/1, number: [gte: 0, lte: 10], message: "All values must be a number between 0 and 10.")
{:error, "All values must be a number between 0 and 10."}