UNPKG

node-amy

Version:

A HTML template framework without client-side JavaScript dependencies

112 lines (92 loc) 2.95 kB
'use strict' const DashValidator = require('./charCodeValidator/dashValidator') const AtValidator = require('./charCodeValidator/atValidator') const BlankSpaceValidator = require('./charCodeValidator/blankSpaceValidator') const DotValidator = require('./charCodeValidator/dotValidator') const ForwardSlashValidator = require('./charCodeValidator/forwardSlashValidator') const LowerCaseValidator = require('./charCodeValidator/lowercaseLetterValidator') const RoundBracketValidator = require('./charCodeValidator/roundBracketValidator') const CurlyBracketValidator = require('./charCodeValidator/curlyBracketValidator') const UpperCaseValidator = require('./charCodeValidator/uppercaseLetterValidator') const DigitsValidator = require('./charCodeValidator/digitsValidator') /** */ class CharacterValidator { constructor(validators) { this._validators = validators } static get Builder() { return Builder } /** * Checks if a string contains a valid or invalid character at a given index. This check is very strict * and may be simplified in the future * @param {String} string the string that contains the character to be validated * @param {Number} index the index of the character * @returns {boolean} true if the character is a valid character, false if not */ isValid(string, index) { return this._validators.some(validator => validator.isValid(string, index)) } } /** * @memberof Validator * @private * */ class Builder { constructor() { this._validators = [] } allowDash() { this._validators.push(new DashValidator()) return this } /** */ allowAt() { this._validators.push(new AtValidator()) return this } /** */ allowBlank() { this._validators.push(new BlankSpaceValidator()) return this } /** */ allowDot() { this._validators.push(new DotValidator()) return this } /** */ allowForwardSlash() { this._validators.push(new ForwardSlashValidator()) return this } /** */ allowRoundBrackets() { this._validators.push(new RoundBracketValidator()) return this } /** */ allowCurlyBrackets() { this._validators.push(new CurlyBracketValidator()) return this } /** */ allowUpperCaseLetters() { this._validators.push(new UpperCaseValidator()) return this } /** */ allowLowerCaseLetters() { this._validators.push(new LowerCaseValidator()) return this } allowDigits() { this._validators.push(new DigitsValidator()) return this } /** */ build() { return new CharacterValidator(this._validators) } } module.exports = CharacterValidator