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();
}
}