validating/validator.js

  1. 'use strict'
  2. const DashValidator = require('./charCodeValidator/dashValidator')
  3. const AtValidator = require('./charCodeValidator/atValidator')
  4. const BlankSpaceValidator = require('./charCodeValidator/blankSpaceValidator')
  5. const DotValidator = require('./charCodeValidator/dotValidator')
  6. const ForwardSlashValidator = require('./charCodeValidator/forwardSlashValidator')
  7. const LowerCaseValidator = require('./charCodeValidator/lowercaseLetterValidator')
  8. const RoundBracketValidator = require('./charCodeValidator/roundBracketValidator')
  9. const CurlyBracketValidator = require('./charCodeValidator/curlyBracketValidator')
  10. const UpperCaseValidator = require('./charCodeValidator/uppercaseLetterValidator')
  11. const DigitsValidator = require('./charCodeValidator/digitsValidator')
  12. /** */
  13. class CharacterValidator {
  14. constructor(validators) {
  15. this._validators = validators
  16. }
  17. static get Builder() {
  18. return Builder
  19. }
  20. /**
  21. * Checks if a string contains a valid or invalid character at a given index. This check is very strict
  22. * and may be simplified in the future
  23. * @param {String} string the string that contains the character to be validated
  24. * @param {Number} index the index of the character
  25. * @returns {boolean} true if the character is a valid character, false if not
  26. */
  27. isValid(string, index) {
  28. return this._validators.some(validator => validator.isValid(string, index))
  29. }
  30. }
  31. /**
  32. * @memberof Validator
  33. * @private
  34. * */
  35. class Builder {
  36. constructor() {
  37. this._validators = []
  38. }
  39. allowDash() {
  40. this._validators.push(new DashValidator())
  41. return this
  42. }
  43. /** */
  44. allowAt() {
  45. this._validators.push(new AtValidator())
  46. return this
  47. }
  48. /** */
  49. allowBlank() {
  50. this._validators.push(new BlankSpaceValidator())
  51. return this
  52. }
  53. /** */
  54. allowDot() {
  55. this._validators.push(new DotValidator())
  56. return this
  57. }
  58. /** */
  59. allowForwardSlash() {
  60. this._validators.push(new ForwardSlashValidator())
  61. return this
  62. }
  63. /** */
  64. allowRoundBrackets() {
  65. this._validators.push(new RoundBracketValidator())
  66. return this
  67. }
  68. /** */
  69. allowCurlyBrackets() {
  70. this._validators.push(new CurlyBracketValidator())
  71. return this
  72. }
  73. /** */
  74. allowUpperCaseLetters() {
  75. this._validators.push(new UpperCaseValidator())
  76. return this
  77. }
  78. /** */
  79. allowLowerCaseLetters() {
  80. this._validators.push(new LowerCaseValidator())
  81. return this
  82. }
  83. allowDigits() {
  84. this._validators.push(new DigitsValidator())
  85. return this
  86. }
  87. /** */
  88. build() {
  89. return new CharacterValidator(this._validators)
  90. }
  91. }
  92. module.exports = CharacterValidator