in lib/generator.js [1149:1186]
visitToMapField(fieldValue, fieldName, key, value, level, arr = false) {
const deep = Math.floor((level - 4) / 2);
if (fieldValue.type === 'modelBody' || fieldValue.type === 'moduleModel' ||
fieldValue.type === 'subModel' || fieldValue.idType === 'model' ||
(fieldValue.fieldType && (fieldValue.fieldType.type === 'moduleModel' ||
fieldValue.fieldType.idType === 'model' || fieldValue.fieldType.idType === 'builtin_model'))) {
let realVal = `${value}.to_map()`;
if(deep > 1) {
realVal += ` if ${value} else None`;
}
this.emitFieldConvert(key, realVal, level, arr);
} else if (fieldValue.type === 'array' || fieldValue.fieldType === 'array') {
let subKey = key;
if(deep > 1) {
subKey = `l${deep - 1}`;
this.emit(`${subKey} = []\n`, level);
}
this.emit(`for k${deep} in ${value}:\n`, level);
this.visitToMapField(fieldValue.fieldItemType || fieldValue.subType, fieldName, `${subKey}`, `k${deep}`, level + 2, true);
if(deep > 1) {
this.emitFieldConvert(key, subKey, level, arr);
}
} else if (fieldValue.fieldType === 'map' || fieldValue.type === 'map') {
let subKey = key;
if(deep > 1) {
subKey = `d${deep - 1}`;
this.emit(`${subKey} = {}\n`, level);
}
this.emit(`for k${deep}, v${deep} in self.${fieldName}.items():\n`, level);
this.visitToMapField(fieldValue.valueType, fieldName, `${subKey}[k${deep}]`, `v${deep}`, level + 2);
if(deep > 1) {
this.emitFieldConvert(key, subKey, level, arr);
}
} else {
this.emitFieldConvert(key, value, level, arr);
}
}