Skip to content
Snippets Groups Projects
form.js 1.54 KiB
Newer Older
clemo's avatar
clemo committed
import debug from 'debug';
import validator from 'validator';

const log = debug('helper:form');

export class Form {
  constructor(validation) { this.validation = validation; }
  fill(object, check = true) {
    for (let element in this.validation) {
      this.validation[element].value = object[element];
      if (check) {
        this.validation[element].error = !this.isValid(element);
      }
    }

    return this.validation;
  } // end fill
  isValid(element) {
    if ("undefined" !== typeof element) { // check 1 element
      if ("function" === typeof this.validation[element].convert) {
        this.validation[element].checkValue =
            this.validation[element].convert(this.validation[element].value);

      } else if ("string" === typeof this.validation[element.convert]) {
        this.validation[element].value =
            validator[this.validation[element].convert](object[element]);
      } else {
        this.validation[element].checkValue = this.validation[element].value;
      }
      if (!validator[this.validation[element].validator](
              this.validation[element].checkValue,
              this.validation[element].options)) {
        log("invalid value", element, this.validation[element].checkValue,
            this.validation[element].value);
        return false;

      } else {
        return true;
      }
    } else { // check everything
      for (let e in this.validation) {
        if (!this.isValid(e)) {
          return false;
        }
      }
      return true;
    }
  } // end isValid
}

exports.default = Form;