You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
5.9 KiB
198 lines
5.9 KiB
import {ValidationResult, ValidatorFunction} from "./types";
|
|
|
|
export namespace Num {
|
|
/**
|
|
* Builds a validator function that requires the input value to be greater than some value.
|
|
* @param value
|
|
*/
|
|
export function greaterThan(value: number): ValidatorFunction {
|
|
return function greaterThan(fieldName: string, inputValue: any): ValidationResult {
|
|
if ( inputValue > value ) {
|
|
return { valid: true }
|
|
}
|
|
|
|
return {
|
|
valid: false,
|
|
message: `must be greater than ${value}`
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Builds a validator function that requires the input value to be at least some value.
|
|
* @param value
|
|
*/
|
|
export function atLeast(value: number): ValidatorFunction {
|
|
return function atLeast(fieldName: string, inputValue: any): ValidationResult {
|
|
if ( inputValue >= value ) {
|
|
return { valid: true }
|
|
}
|
|
|
|
return {
|
|
valid: false,
|
|
message: `must be at least ${value}`
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Builds a validator function that requires the input value to be less than some value.
|
|
* @param value
|
|
*/
|
|
export function lessThan(value: number): ValidatorFunction {
|
|
return function lessThan(fieldName: string, inputValue: any): ValidationResult {
|
|
if ( inputValue < value ) {
|
|
return { valid: true }
|
|
}
|
|
|
|
return {
|
|
valid: false,
|
|
message: `must be less than ${value}`
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Builds a validator function that requires the input value to be at most some value.
|
|
* @param value
|
|
*/
|
|
export function atMost(value: number): ValidatorFunction {
|
|
return function atMost(fieldName: string, inputValue: any): ValidationResult {
|
|
if ( inputValue <= value ) {
|
|
return { valid: true }
|
|
}
|
|
|
|
return {
|
|
valid: false,
|
|
message: `must be at most ${value}`
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Builds a validator function that requires the input value to have exactly `num` many digits.
|
|
* @param num
|
|
*/
|
|
export function digits(num: number): ValidatorFunction {
|
|
return function digits(fieldName: string, inputValue: any): ValidationResult {
|
|
if ( String(inputValue).replace('.', '').length === num ) {
|
|
return { valid: true }
|
|
}
|
|
|
|
return {
|
|
valid: false,
|
|
message: `must have exactly ${num} digits`
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Builds a validator function that requires the input value to have at least `num` many digits.
|
|
* @param num
|
|
*/
|
|
export function digitsMin(num: number): ValidatorFunction {
|
|
return function digitsMin(fieldName: string, inputValue: any): ValidationResult {
|
|
if ( String(inputValue).replace('.', '').length >= num ) {
|
|
return { valid: true }
|
|
}
|
|
|
|
return {
|
|
valid: false,
|
|
message: `must have at least ${num} digits`
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Builds a validator function that requires the input value to have at most `num` many digits.
|
|
* @param num
|
|
*/
|
|
export function digitsMax(num: number): ValidatorFunction {
|
|
return function digitsMax(fieldName: string, inputValue: any): ValidationResult {
|
|
if ( String(inputValue).replace('.', '').length <= num ) {
|
|
return { valid: true }
|
|
}
|
|
|
|
return {
|
|
valid: false,
|
|
message: `must have at most ${num} digits`
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Builds a validator function that requires the input value to end with the given number sequence.
|
|
* @param num
|
|
*/
|
|
export function ends(num: number): ValidatorFunction {
|
|
return function ends(fieldName: string, inputValue: any): ValidationResult {
|
|
if ( String(inputValue).endsWith(String(num)) ) {
|
|
return { valid: true }
|
|
}
|
|
|
|
return {
|
|
valid: false,
|
|
message: `must end with "${num}"`
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Builds a validator function that requires the input value to begin with the given number sequence.
|
|
* @param num
|
|
*/
|
|
export function begins(num: number): ValidatorFunction {
|
|
return function begins(fieldName: string, inputValue: any): ValidationResult {
|
|
if ( String(inputValue).startsWith(String(num)) ) {
|
|
return { valid: true }
|
|
}
|
|
|
|
return {
|
|
valid: false,
|
|
message: `must begin with "${num}"`
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Builds a validator function that requires the input value to be a multiple of the given number.
|
|
* @param num
|
|
*/
|
|
export function multipleOf(num: number): ValidatorFunction {
|
|
return function multipleOf(fieldName: string, inputValue: any): ValidationResult {
|
|
if ( inputValue % num === 0 ) {
|
|
return { valid: true }
|
|
}
|
|
|
|
return {
|
|
valid: false,
|
|
message: `must be a multiple of ${num}`
|
|
}
|
|
}
|
|
}
|
|
|
|
/** Requires the input value to be even. */
|
|
export function even(fieldName: string, inputValue: any): ValidationResult {
|
|
if ( inputValue % 2 === 0 ) {
|
|
return { valid: true }
|
|
}
|
|
|
|
return {
|
|
valid: false,
|
|
message: 'must be even',
|
|
}
|
|
}
|
|
|
|
/** Requires the input value to be odd. */
|
|
export function odd(fieldName: string, inputValue: any): ValidationResult {
|
|
if ( inputValue % 2 === 0 ) {
|
|
return { valid: true }
|
|
}
|
|
|
|
return {
|
|
valid: false,
|
|
message: 'must be odd',
|
|
}
|
|
}
|
|
}
|