in lib/generator.js [1188:1228]
visitToMap(ast, level) {
this.emit('def to_map(self):\n', level);
this.emit('result = dict()\n' , level + 2);
this.emit('_map = super().to_map()\n' , level + 2);
this.emit('if _map is not None:\n' , level + 2);
this.emit('result = _map\n', level + 4);
for (let i = 0; i < ast.nodes.length; i++) {
const node = ast.nodes[i];
let realName = this.getRealName(node);
let comments = DSL.comment.getFrontComments(this.comments, node.tokenRange[0]);
this.visitComments(comments, level);
let param = _avoidKeywords(_snakeCase(_escape(_name(node.fieldName))));
const hasModel = this.checkFieldHasModel(node.fieldValue);
let arr = false;
if(hasModel && !this.config.noneEmpty) {
if (node.fieldValue.type === 'array' || node.fieldValue.fieldType === 'array') {
this.emit(`result['${realName}'] = []\n`, level + 2);
arr = true;
} else if (node.fieldValue.fieldType === 'map' || node.fieldValue.type === 'map') {
this.emit(`result['${realName}'] = {}\n`, level + 2);
}
}
this.emit(`if self.${param} is not None:\n`, level + 2);
if(!hasModel) {
this.emit(`result['${realName}'] = self.${param}\n`, level + 4);
} else {
if(this.config.noneEmpty) {
if (node.fieldValue.type === 'array' || node.fieldValue.fieldType === 'array') {
this.emit(`result['${realName}'] = []\n`, level + 4);
arr = true;
} else if (node.fieldValue.fieldType === 'map' || node.fieldValue.type === 'map') {
this.emit(`result['${realName}'] = {}\n`, level + 4);
}
}
this.visitToMapField(node.fieldValue, param, `result['${realName}']`, `self.${param}`, level + 4, arr);
}
this.emit('\n');
}
this.emit('return result\n', level + 2);
this.emit('\n');
}