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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

value

any

The multi value to assert

Example(s)

mv.isNotNullOrEmpty(['elem01']) // true

mv.isNotNullOrEmpty(null) // false
mv.isNotNullOrEmpty([]) // false

Last updated