emitValidate()

in src/langs/swift/combinator.js [1276:1338]


  emitValidate(emitter, props) {
    //print validate
    emitter.emitln('');
    emitter.emitln('public override func validate() throws -> Void {', this.level);
    this.levelUp();
    props.forEach(prop => {

      let required = prop.notes.filter(item => item.key === 'required');
      let maxLength = prop.notes.filter(item => item.key === 'maxLength');
      let minLength = prop.notes.filter(item => item.key === 'minLength');
      let pattern = prop.notes.filter(item => item.key === 'pattern');
      let maximum = prop.notes.filter(item => item.key === 'maximum');
      let minimum = prop.notes.filter(item => item.key === 'minimum');

      if (required.length > 0) {
        emitter.emitln(
          `try self.validateRequired(self.${_name(prop.name)}, "${_name(prop.name)}")`,
          this.level
        );
      }
      if (maxLength.length > 0 || minLength.length > 0 || pattern.length > 0 || maximum.length > 0 || minimum.length > 0) {
        emitter.emitln(`if self.${_name(prop.name)} != nil {`, this.level);
        this.levelUp();

        if (maxLength.length > 0) {
          emitter.emitln(`try self.validateMaxLength(self.${_name(prop.name)}, "${_name(prop.name)}", ${maxLength[0].value})`, this.level);
        }

        if (minLength.length > 0) {
          emitter.emitln(`try self.validateMinLength(self.${_name(prop.name)}, "${_name(prop.name)}", ${minLength[0].value})`, this.level);
        }

        if (pattern.length > 0) {
          emitter.emitln(`try self.validatePattern(self.${_name(prop.name)}, "${_name(prop.name)}", "${pattern[0].value}")`, this.level);
        }

        if (maximum.length > 0) {
          emitter.emitln(`try self.validateMaximum(self.${_name(prop.name)} as! NSNumber, "${_name(prop.name)}", ${maximum[0].value})`, this.level);
        }

        if (minimum.length > 0) {
          emitter.emitln(`try self.validateMinimum(self.${_name(prop.name)} as! NSNumber, "${_name(prop.name)}", ${minimum[0].value})`, this.level);
        }
        this.levelDown();
        emitter.emitln('}', this.level);
      }


      if (is.array(prop.type) || is.map(prop.type)) {
        let emt = new Emitter(emitter.config);
        this.emitComplexValidate(emt, prop.name, prop.type, 0);
        if (emt.needSave === true) {
          emitter.emit(emt.output);
        }
      } else if (is.object(prop.type) && prop.type.objectName && prop.type.objectName.indexOf('#') === 0) {
        emitter.emitln(`try self.${_name(prop.name)}?.validate()`, this.level);
      }
    });
    this.levelDown();
    emitter.emitln('}', this.level);
    emitter.emitln();
  }
}