Packages

This module comprises of truth value definitions like the whether the data is empty or blank or null or nil or its length is 0 like. To say in one word the extended functions of value assertion functions

Current section

Files

Jump to
is_x lib is_x.ex
Raw

lib/is_x.ex

defmodule IsX do
@moduledoc ~S"""
___ __ __ __ __ _ _
|_ _|___\ \/ / | \/ | ___ __| |_ _| | ___
| |/ __|\ / | |\/| |/ _ \ / _` | | | | |/ _ \
| |\__ \/ \ | | | | (_) | (_| | |_| | | __/
|___|___/_/\_\ |_| |_|\___/ \__,_|\__,_|_|\___|
This module comprises of truth value definitions like the whether the data is
empty or blank or null or nil or its length is 0 like.
To say in one word the extended functions of value assertion functions
"""
@doc ~S"""
Checks for the blank Strings
Spaces are treated as blank here
## Examples
iex> IsX.is_blank(Null)
true
iex> IsX.is_blank(nil)
true
iex> IsX.is_blank("")
true
iex> IsX.is_blank(" ")
true
iex> IsX.is_blank([])
true
iex> IsX.is_blank({})
true
iex> IsX.is_blank("\n\t")
true
iex> IsX.is_blank(%{})
true
iex> IsX.is_blank()
true
iex> IsX.is_blank([1,2,3])
false
iex> IsX.is_blank(%{name: "blackode"})
false
iex> IsX.is_blank(12345)
false
iex> IsX.is_blank("blackode")
false
"""
@spec is_blank(term()) :: boolean()
def is_blank(data) when data in [nil,[],%{},{},"\n\t",Null] do
true
end
def is_blank data do
if is_binary(data), do: Regex.match?(~r/^\s*\Z/,data), else: false
end
def is_blank do
true
end
@doc ~S"""
Checks the given data is empty or not .
Spaces,new_lines,tabs treated as binary here
## Examples
iex> IsX.is_empty(Null)
true
iex> IsX.is_empty(nil)
true
iex> IsX.is_empty("")
true
iex> IsX.is_empty([])
true
iex> IsX.is_empty(%{})
true
iex> IsX.is_empty()
true
iex> IsX.is_empty([1,2,3])
false
iex> IsX.is_empty(%{name: "blackode"})
false
iex> IsX.is_empty("blackode")
false
iex> IsX.is_empty(12345)
false
iex> IsX.is_empty(" ")
false
iex> IsX.is_empty("\n\t")
false
"""
@spec is_empty(term()) :: boolean()
def is_empty(data) when data in ["",nil,[],%{},Null] do
true
end
def is_empty data do
false
end
def is_empty do
true
end
@doc ~S"""
Here except the nil and Null rest are treated as data present
empty maps,tuples and lists are treated as the data
## Examples
iex> IsX.is_none(Null)
true
iex> IsX.is_none(nil)
true
iex> IsX.is_none()
true
iex> IsX.is_none("")
false
iex> IsX.is_none(" ")
false
iex> IsX.is_none([])
false
iex> IsX.is_none({})
false
iex> IsX.is_none("\n\t")
false
iex> IsX.is_none(%{})
false
iex> IsX.is_none([1,2,3])
false
iex> IsX.is_none(%{name: "blackode"})
false
"""
@spec is_none(term()) :: boolean()
def is_none(data) when data in [nil,Null] do
true
end
def is_none _data do
false
end
def is_none do
true
end
@doc ~S"""
Here except the nil and Null ,data is true
Even the false and true also treated as data
## Examples
iex> IsX.is_present(Null)
false
iex> IsX.is_present(nil)
false
iex> IsX.is_present()
false
iex> IsX.is_present("")
false
iex> IsX.is_present(" ")
false
iex> IsX.is_present([])
false
iex> IsX.is_present({})
false
iex> IsX.is_present("\n\t")
false
iex> IsX.is_present(%{})
false
iex> IsX.is_present(0)
true
iex> IsX.is_present([1,2,3])
true
iex> IsX.is_present(%{name: "blackode"})
true
iex> IsX.is_present(true)
true
iex> IsX.is_present(false)
true
iex> IsX.is_present(:false)
true
iex> IsX.is_present(:true)
true
"""
@spec is_present(term()) :: boolean()
def is_present do
false
end
def is_present(data) when data in [false,true] do
true
end
def is_present(data) when data in [nil,Null,"\n\t",[],%{},{}] do
false
end
def is_present(data) when is_binary(data) do
if Regex.match?(~r/^\s*\z/,data), do: false, else: true
end
def is_present(data) do
true
end
@doc ~S"""
Returns true if the given data is not a number
or else returns false
## Examples
iex> IsX.is_nan("blackode 1234")
true
iex> IsX.is_nan("1234")
true
iex> IsX.is_nan(1234)
false
"""
@spec is_nan(term()) :: boolean()
def is_nan data do
if is_number(data), do: false, else: true
end
@doc ~S"""
Checks whether the passed value is zero or not
## Examples
iex> IsX.is_zero 0
true
iex> IsX.is_zero(length([]))
tue
iex> IsX.is_zero("blackode")
false
iex> IsX.is_zero 1234
false
iex> IsX.is_zero 0.0
false
"""
@spec is_zero(term()) :: boolean()
def is_zero data do
if data === 0, do: true, else: false
end
@doc ~S"""
Checks given number is positive or not
## Examples
iex> IsX.is_positive 0
true
iex> IsX.is_positive 7
true
iex> IsX.is_positive -7
false
"""
@spec is_positive(number()) :: boolean()
def is_positive num do
if is_number(num), do: if num >= 0, do: true, else: false end
@doc ~S"""
Checks given number is negative or not
## Examples
iex> IsX.is_negative 0
false
iex> IsX.is_negative 7
false
iex> IsX.is_negative -7
true
"""
@spec is_negative(number()) :: boolean()
def is_negative num do
if is_number(num), do: if num >= 0, do: false, else: true
end
end