visitInit()

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