visitIfElse()

in src/resolver/client.js [1073:1119]


  visitIfElse(stmt, type = 'if') {
    let node = new GrammerCondition(type);
    if (stmt.condition) {
      node.addCondition(this.visitIfConfition(stmt.condition));
    }
    if (stmt.stmts) {
      if (stmt.stmts.type && stmt.stmts.type === 'stmts') {
        if (stmt.stmts.stmts.length > 0) {
          stmt.stmts.stmts.forEach(item => {
            this.visitStmt(node, item, node.index);
          });
        } else {
          this.findComments(node, stmt.stmts, 'between');
        }
      } else if (stmt.type && stmt.type === 'stmts') {
        if (stmt.stmts.length > 0) {
          stmt.stmts.forEach(item => {
            this.visitStmt(node, item, node.index);
          });
        } else {
          this.findComments(node, stmt, 'between');
        }
      } else {
        debug.stack(stmt);
      }
    } else {
      debug.stack(stmt);
    }

    if (stmt.elseIfs) {
      stmt.elseIfs.forEach(elseIf => {
        node.addElse(this.visitIfElse(elseIf, 'elseif'));
      });
    }

    if (stmt.elseStmts) {
      node.addElse(this.visitIfElse(stmt.elseStmts, 'else'));
    }

    if (stmt.elseAssigns) {
      stmt.elseAssigns.forEach(elseAssign => {
        node.elseItem.push(this.visitIfElse(elseAssign, 'else'));
      });
    }

    return node;
  }