import { ruleMessage } from '@/utils/ruleMessage' import type { ValidationRule, ValidationResult, ErrorMessages, Value, } from '../types' import { defaultErrorMessages } from './locales' /** Check that the value does not exceeds the specified length */ export function isExactLengthFn( lengthValue: number, ignoreSpaces = false, errorMessages: ErrorMessages = defaultErrorMessages, ): ValidationRule { return (value: Value): ValidationResult => { if (!value) { return true } if (typeof value !== 'string') { return ruleMessage(errorMessages, 'default', [lengthValue]) } if (ignoreSpaces) { value = value.replace(/\s/g, '') } return ( value.length === lengthValue || ruleMessage(errorMessages, 'default', [lengthValue]) ) } }