View Source Dsv.Number (Dsv v0.2.1)
Dsv.Number module provides functions to validate a number based on various options.
Possible options
:gt
- Greater than (value must be greater than the specified number).:lt
- Lower than (value must be lower than the specified number).:gte
- Greater than or equal (value must be greater than or equal to the specified number).:lte
- Lower than or equal (value must be lower than or equal to the specified number).:eq
- Equal (value must be equal to the specified number).:between
- Between (value must be within the specified range defined by two numbers).
Options can be combined.
Summary
Functions
The valid?/2
function checks if a provided number meets specific validation criteria based on the given options (in the form of a keyword list).
The validate/2
function checks if a provided number meets specific validation criteria based on the given options.
Functions
The valid?/2
function checks if a provided number meets specific validation criteria based on the given options (in the form of a keyword list).
Parameters
number
- The number to be validated (integer of float).options
- A list of validation options. Each option consists of a keyword followed by the corresponding value. Supported options include::gt
- Greater than (value must be greater than the specified number).:lt
- Lower than (value must be lower than the specified number).:gte
- Greater than or equal (value must be greater than or equal to the specified number).:lte
- Lower than or equal (value must be lower than or equal to the specified number).:eq
- Equal (value must be equal to the specified number).:between
- Between (value must be within the specified range defined by two numbers).
Returns
A boolean value:
true
if thenumber
meets all the specified validation criteria.false
if thenumber
fails to meet any of the specified criteria.
Examples
:gt
example:
iex> Dsv.Number.valid?(4, gt: 3)
:true
iex> Dsv.Number.valid?(4, gt: 4)
:false
iex> Dsv.Number.valid?(4, gt: 5)
:false
:gte
example:
iex> Dsv.Number.valid?(4, gte: 3)
:true
iex> Dsv.Number.valid?(4, gte: 4)
:true
iex> Dsv.Number.valid?(4, gte: 5)
:false
:lt
example:
iex> Dsv.Number.valid?(4, lt: 3)
:false
iex> Dsv.Number.valid?(4, lt: 4)
:false
iex> Dsv.Number.valid?(4, lt: 5)
:true
:lte
example:
iex> Dsv.Number.valid?(4, lte: 3)
:false
iex> Dsv.Number.valid?(4, lte: 4)
:true
iex> Dsv.Number.valid?(4, lte: 5)
:true
:gt & :lt
example:
iex> Dsv.Number.valid?(4, gt: 3, lt: 5)
:true
iex> Dsv.Number.valid?(4, gt: 4, lt: 5)
:false
iex> Dsv.Number.valid?(4, gt: 2, lt: 4)
:false
:gte & :lt
example:
iex> Dsv.Number.valid?(4, gte: 3, lt: 5)
:true
iex> Dsv.Number.valid?(4, gte: 4, lt: 5)
:true
iex> Dsv.Number.valid?(4, gte: 2, lt: 4)
:false
:gt & :lte
example:
iex> Dsv.Number.valid?(4, gt: 3, lte: 5)
:true
iex> Dsv.Number.valid?(4, gt: 4, lte: 5)
:false
iex> Dsv.Number.valid?(4, gt: 2, lte: 4)
:true
:gte & :lte
example:
iex> Dsv.Number.valid?(4, gte: 3, lte: 5)
:true
iex> Dsv.Number.valid?(4, gte: 4, lte: 5)
:true
iex> Dsv.Number.valid?(4, gte: 2, lte: 4)
:true
iex> Dsv.Number.valid?(1, gte: 2, lte: 4)
:false
iex> Dsv.Number.valid?(5, gte: 2, lte: 4)
:false
:between
example:
iex> Dsv.Number.valid?(4, between: {3, 5})
:true
iex> Dsv.Number.valid?(4, between: {4, 5})
:true
iex> Dsv.Number.valid?(4, between: {2, 4})
:true
iex> Dsv.Number.valid?(1, between: {2, 4})
:false
iex> Dsv.Number.valid?(5, between: {2, 4})
:false
:eq
example:
iex> Dsv.Number.valid?(4, eq: 4)
:true
iex> Dsv.Number.valid?(4, eq: 5)
:false
The validate/2
function checks if a provided number meets specific validation criteria based on the given options.
Parameters
number
- The number to be validated.options
- A list of validation options. Each option consists of a keyword followed by the corresponding value. Supported options include::gt
- Greater than (value must be greater than the specified number).:lt
- Lower than (value must be lower than the specified number).:gte
- Greater than or equal (value must be greater than or equal to the specified number).:lte
- Lower than or equal (value must be lower than or equal to the specified number).:eq
- Equal (value must be equal to the specified number).:between
- Between (value must be within the specified range defined by two numbers).
message
(optional) - Custom message returned in case of error.
Returns
:ok
if thenumber
meets all the specified validation criteria.{:error, message}
if thenumber
fails to meet any of the specified criteria.
Examples
:gt
example:
iex> Dsv.Number.validate(4, gt: 3)
:ok
iex> Dsv.Number.validate(4, gt: 4)
{:error, "Value 4 must be greater than: 4"}
iex> Dsv.Number.validate(4, gt: 5)
{:error, "Value 4 must be greater than: 5"}
iex> Dsv.Number.validate(4, gt: 5, message: "This number is too small.")
{:error, "This number is too small."}
:gte
example:
iex> Dsv.Number.validate(4, gte: 3)
:ok
iex> Dsv.Number.validate(4, gte: 4)
:ok
iex> Dsv.Number.validate(4, gte: 5)
{:error, "Value 4 must be greater than or equal: 5"}
iex> Dsv.Number.validate(2, gte: 5, message: fn
...> data, _options when data > 3 -> "This value is too small."
...> _data, _options -> "This value is way too small."
...> end)
{:error, "This value is way too small."}
:lt
example:
iex> Dsv.Number.validate(4, lt: 3)
{:error, "Value 4 must be lower than: 3"}
iex> Dsv.Number.validate(4, lt: 4)
{:error, "Value 4 must be lower than: 4"}
iex> Dsv.Number.validate(4, lt: 4, message: "Please provide smaller number.")
{:error, "Please provide smaller number."}
iex> Dsv.Number.validate(4, lt: 5)
:ok
:lte
example:
iex> Dsv.Number.validate(4, lte: 3)
{:error, "Value 4 must be lower than or equal: 3"}
iex> Dsv.Number.validate(4, lte: 4)
:ok
iex> Dsv.Number.validate(4, lte: 5)
:ok
:gt & :lt
example:
iex> Dsv.Number.validate(4, gt: 3, lt: 5)
:ok
iex> Dsv.Number.validate(4, gt: 4, lt: 5)
{:error, "Value 4 must be lower than: 5 and greater than: 4"}
iex> Dsv.Number.validate(4, gt: 2, lt: 4)
{:error, "Value 4 must be lower than: 4 and greater than: 2"}
:gte & :lt
example:
iex> Dsv.Number.validate(4, gte: 3, lt: 5)
:ok
iex> Dsv.Number.validate(4, gte: 4, lt: 5)
:ok
iex> Dsv.Number.validate(4, gte: 2, lt: 4)
{:error, "Value 4 must be lower than: 4 and greater than or equal: 2"}
:gt & :lte
example:
iex> Dsv.Number.validate(4, gt: 3, lte: 5)
:ok
iex> Dsv.Number.validate(4, gt: 4, lte: 5)
{:error, "Value 4 must be lower than or equal: 5 and greater than: 4"}
iex> Dsv.Number.validate(4, gt: 2, lte: 4)
:ok
:gte & :lte
example:
iex> Dsv.Number.validate(4, gte: 3, lte: 5)
:ok
iex> Dsv.Number.validate(4, gte: 4, lte: 5)
:ok
iex> Dsv.Number.validate(4, gte: 2, lte: 4)
:ok
iex> Dsv.Number.validate(1, gte: 2, lte: 4)
{:error, "Value 1 must be lower than or equal: 4 and greater than or equal: 2"}
iex> Dsv.Number.validate(5, gte: 2, lte: 4)
{:error, "Value 5 must be lower than or equal: 4 and greater than or equal: 2"}
:between
example:
iex> Dsv.Number.validate(4, between: {3, 5})
:ok
iex> Dsv.Number.validate(4, between: {4, 5})
:ok
iex> Dsv.Number.validate(4, between: {2, 4})
:ok
iex> Dsv.Number.validate(1, between: {2, 4})
{:error, "Value 1 must be lower than or equal: 4 and greater than or equal: 2"}
iex> Dsv.Number.validate(5, between: {2, 4})
{:error, "Value 5 must be lower than or equal: 4 and greater than or equal: 2"}
:eq
example:
iex> Dsv.Number.validate(4, eq: 4)
:ok
iex> Dsv.Number.validate(4, eq: 5)
{:error, "Value 4 must be equal to value 5"}
wrong options
example:
iex> Dsv.Number.validate(1, lt: 2, gt: "not a number")
{:error, "Value 1 must be lower than: 2 and greater than: not a number"}
iex> Dsv.Number.validate("wrong data", between: {1, 5})
{:error, ~s(Value "wrong data" must be lower than or equal: 5 and greater than or equal: 1)}