in lib/generator.js [551:587]
visitInit(ast, types, level) {
assert.equal(ast.type, 'init');
this.emit('\n');
types.forEach((item) => {
let comments = DSL.comment.getFrontComments(this.comments, item.tokenRange[0]);
this.visitComments(comments, level + 2);
this.emit(`${_snakeCase(_vid(item.vid))}: `, level + 2);
this.visitType(item.value);
this.emit(' = None\n', level);
});
if(ast.params.params.length !== 0) {
this.emit('\n');
this.emit('def __init__(\n', level + 2);
this.emit('self,\n', level + 4);
for (var i = 0; i < ast.params.params.length; i++) {
const node = ast.params.params[i];
assert.equal(node.type, 'param');
const name = _avoidKeywords(_snakeCase(_name(node.paramName)));
this.emit(`${name}: `, level + 4);
this.visitType(node.paramType, level);
this.emit(',');
if (i !== ast.params.length - 1) {
this.emit('\n');
}
}
this.emit('):\n', level + 2);
} else {
this.emit('def __init__(self):\n', level + 2);
}
if (ast.initBody && ast.initBody.stmts.length !==0 ) {
this.isStaticFunction = false;
this.visitStmts(ast.initBody, level + 4);
this.isStaticFunction = true;
} else {
this.emit('pass\n', level + 4);
}
}