mv
Script extension for multi value validation and comparison.
All functions operating on multi values will convert supplied value(s) to multi value if not already (see mv.from(value)
)
In JavaScript multi values are represented as arrays.
mv.from
Converts a value to a multi value if not already.
Handles the following types of input values:
arrays (returned as is)
json arrays (parsed to array)
single values of any types (added as first element to new array)
Syntax
mv.from(value)
Arguments
value
any
The value to convert to multi value
Example(s)
// Create multi value from single value string
mv.from('elem') // -> ['elem']
// Create multi value from json array
mv.from('["elem01", "elem02"]') // -> ['elem01', 'elem02']
mv.length
Returns the length of the supplied multi value.
Syntax
mv.length(value)
Arguments
value
any
The multi value whose length is to be calculated and returned.
Example(s)
// Get multi value length of single value string
mv.length('elem') // -> 1
// Get multi value length of an array
mv.length(['elem01', 'elem02', 'elem03']) // -> 3
// Get multi value length of an json array
mv.length('["elem01", "elem02"]') // -> 2
mv.contains
Returns true
if the supplied multi value contains the supplied expected value, possibly ignoring the case (if values are strings).
Note: This function works exactly like mv.containsAny
but with support for only one expected value.
Syntax
mv.contains(value, expected[, ignoreCase])
Arguments
value
any
The multi value whose content is to be asserted.
expected
any
Value expected to be contained in value
ignoreCase
boolean
Flag turning on string case insensitivity (default: false
)
Example(s)
mv.contains(['elem01', 'elem02', 'elem03'], 'elem02') // true
mv.contains(['elem01', 'elem02', 'elem03'], 'elem04') // false
mv.contains(['elem01', 'elem02', 'elem03'], 'ELEM02', true) // true
mv.contains([7, 99, 845], 'unknown') // false
mv.contains([7, 99, 845], 7) // true
mv.containsAny
Returns true
if the supplied multi value contains at least one of the supplied expected values, possibly ignoring the case (if values are strings).
Syntax
mv.containsAny(value, expected[, expected, ...][, ignoreCase])
Arguments
value
any
The multi value whose content is to be asserted.
expected
any
One or more values expected to be contained in value
ignoreCase
boolean
Flag turning on string case insensitivity (default: false
)
Example(s)
mv.containsAny(['elem01', 'elem02', 'elem03'], 'elem02') // true
mv.containsAny(['elem01', 'elem02', 'elem03'], 'elem04') // false
mv.containsAny(['elem01', 'elem02', 'elem03'], 'elem04', 'elem02') // true
mv.containsAll
Returns true
if the supplied multi value contains all of the supplied expected values, possibly ignoring the case (if values are strings).
Syntax
mv.containsAll(value, expected[, expected, ...][, ignoreCase])
Arguments
value
any
The multi value whose content is to be asserted.
expected
any
One or more values expected to be contained in value
ignoreCase
boolean
Flag turning on string case insensitivity (default: false
)
Example(s)
mv.containsAll(['elem01', 'elem02', 'elem03'], 'elem02') // true
mv.containsAll(['elem01', 'elem02', 'elem03'], 'elem04') // false
mv.containsAll(['elem01', 'elem02', 'elem03'], 'elem04', 'elem02') // false
mv.containsAll(['elem01', 'elem02', 'elem03'], 'elem01', 'elem02') // true
mv.matchAny
Returns true
if at least one value in the supplied multi value matches one or more of the supplied regex's.
Regex may be supplied as strings, regex-literals or RegExp objects.
Note: Case-insensitivity is controlled by regex flag ('i'
).
Syntax
mv.matchAny(value, regex [,regex, ...])
Arguments
value
any
The multi value whose content is to be matched.
expected
any
One or more regex to match against value.
Example(s)
mv.matchAny(['elem01', 'elem02', 'elem03'], 'elem02', 'elem04') // true
mv.matchAny(['elem01', 'elem02', 'elem03'], /elem02/, /elem04/) // true
mv.matchAny(['elem01', 'elem02', 'elem03'], 'ELEM02') // false
mv.matchAny(['elem01', 'elem02', 'elem03'], /ELEM02/i) // true
mv.matchAny(['elem01', 'elem02', 'elem03'], /^elem[0-9]{,2}$/) // true
mv.equals
Returns true
if the supplied multi values has exactly same content.
Syntax
mv.equals(mv1, mv2)
Arguments
mv1
any
The multi value whose content is to be matched.
mv2
any
One or more regex to match against value.
Example(s)
mv.equals(['elem01'], ['elem01']) // true
mv.equals(['elem01'], ['elem02']) // false
mv.equals(['elem01', 'elem02'], ['elem01', 'elem02']) // true
mv.equals(['elem01', 'elem02'], ['elem01']) // false
mv.equals(['elem01', 'elem02'], ['elem02', 'elem01']) // false
mv.isEmpty
Returns true
if the supplied multi value is not null/undefined and is empty.
Syntax
mv.isEmpty(value)
Arguments
value
any
The multi value to assert
Example(s)
mv.isEmpty([]) // true
mv.isEmpty(['elem01']) // false
mv.isEmpty(null) // false
mv.isNotEmpty
Returns true
if the supplied multi value is not null/undefined and is not empty (has one or more elements).
Syntax
mv.isNotEmpty(value)
Arguments
value
any
The multi value to assert
Example(s)
mv.isNotEmpty(['elem01']) // true
mv.isNotEmpty([]) // false
mv.isNotEmpty(null) // false
mv.isNullOrEmpty
Returns true
if the supplied multi value is null/undefined or is empty.
Syntax
mv.isNullOrEmpty(value)
Arguments
value
any
The multi value to assert
Example(s)
mv.isNullOrEmpty([]) // true
mv.isNullOrEmpty(null) // true
mv.isNullOrEmpty(['elem01']) // false
mv.isNotNullOrEmpty
Returns true
if the supplied multi value is not null/undefined and is not empty (has one or more element).
Syntax
mv.isNotNullOrEmpty(value)
Arguments
value
any
The multi value to assert
Example(s)
mv.isNotNullOrEmpty(['elem01']) // true
mv.isNotNullOrEmpty(null) // false
mv.isNotNullOrEmpty([]) // false
Last updated