visitModelBody()

in lib/generator.js [1014:1063]


  visitModelBody(ast, level, modelName) {
    assert.equal(ast.type, 'modelBody');
    this.visitFieldsInit(ast, level, modelName);
    let node;
    
    for (let i = 0; i < ast.nodes.length; i++) {
      node = ast.nodes[i];
      let comments = DSL.comment.getFrontComments(this.comments, node.tokenRange[0]);
      this.visitComments(comments, level);
      let param = _avoidKeywords(_snakeCase(_escape(_name(node.fieldName))));
      const description = this.getAttributes(node, 'description');
      if (description) {
        const descriptions = description.trimEnd().split('\n');
        for (let j = 0; j < descriptions.length; j++) {
          this.emit(`# ${descriptions[j]}\n`, level + 2);
        }
      }
      this.emit(`self.${param} = ${param}\n`, level + 2);
    }
    this.emit('\n');
    // validate
    this.emit('def validate(self):\n', level);
    if(ast.nodes.length > 0) {
      this.visitModelValidate(ast, level);
    } else {
      this.emit('pass\n', level + 2);
    }

    this.emit('\n');

    // to_map
    this.visitToMap(ast, level);


    // from_map
    this.visitFromMap(ast, modelName, level);
    
    if (node) {
      //find the last node's back comment
      let comments = DSL.comment.getBetweenComments(this.comments, node.tokenRange[0], ast.tokenRange[1]);
      this.visitComments(comments, level);
    }

    if (ast.nodes.length === 0) {
      //empty block's comment
      let comments = DSL.comment.getBetweenComments(this.comments, ast.tokenRange[0], ast.tokenRange[1]);
      this.visitComments(comments, level);
    }

  }