Examples of TokenConsumer


Examples of com.google.caja.lexer.TokenConsumer

  public String getValue() { return label; }

  public String getLabel() { return label; }

  public void render(RenderContext rc) {
    TokenConsumer out = rc.getOut();
    out.mark(getFilePosition());
    out.consume("continue");
    if (null != label && !"".equals(label)) {
      out.consume(label);
    }
  }
View Full Code Here

Examples of com.google.caja.lexer.TokenConsumer

    this.container = (Expression) children.get(1);
    this.body = (Statement) children.get(2);
  }

  public void render(RenderContext rc) {
    TokenConsumer out = rc.getOut();
    out.mark(getFilePosition());
    String label = getRenderedLabel();
    if (null != label) {
      out.consume(label);
      out.consume(":");
    }
    out.consume("for");
    out.consume("(");
    keyReceiver.render(rc);
    out.consume("in");
    container.render(rc);
    out.consume(")");
    body.renderBlock(rc, false);
  }
View Full Code Here

Examples of com.google.caja.lexer.TokenConsumer

  @Override
  public Object getValue() { return null; }

  public void render(RenderContext rc) {
    TokenConsumer out = rc.getOut();
    out.consume("with");
    out.consume("(");
    getScopeObject().render(rc);
    out.consume(")");
    getBody().renderBlock(rc, false);
  }
View Full Code Here

Examples of com.google.caja.lexer.TokenConsumer

  @Override
  public boolean isTargetForContinue() { return false; }

  public void render(RenderContext rc) {
    TokenConsumer out = rc.getOut();
    out.mark(getFilePosition());
    String label = getRenderedLabel();
    if (null != label) {
      out.consume(label);
      out.consume(":");
    }
    Iterator<? extends ParseTreeNode> it = children().iterator();
    out.consume("switch");
    out.consume("(");
    it.next().render(rc);
    out.consume(")");
    out.consume("{");
    while (it.hasNext()) {
      SwitchCase caseStmt = (SwitchCase) it.next();
      caseStmt.render(rc);
    }
    out.mark(FilePosition.endOfOrNull(getFilePosition()));
    out.consume("}");
  }
View Full Code Here

Examples of com.google.caja.lexer.TokenConsumer

  public Expression getCondition() { return condition; }
  @Override
  public Statement getBody() { return body; }

  public void render(RenderContext rc) {
    TokenConsumer out = rc.getOut();
    out.mark(getFilePosition());
    String label = getRenderedLabel();
    if (null != label) {
      out.consume(label);
      out.consume(":");
    }
    out.consume("while");
    out.consume("(");
    condition.render(rc);
    out.consume(")");
    body.renderBlock(rc, false);
  }
View Full Code Here

Examples of com.google.caja.lexer.TokenConsumer

  public Expression getCondition() { return condition; }
  @Override
  public Statement getBody() { return body; }

  public void render(RenderContext rc) {
    TokenConsumer out = rc.getOut();
    out.mark(getFilePosition());
    String label = getRenderedLabel();
    if (null != label) {
      out.consume(label);
      out.consume(":");
    }
    out.consume("do");
    body.renderBlock(rc, true);
    out.consume("while");
    out.consume("(");
    condition.render(rc);
    out.consume(")");
  }
View Full Code Here

Examples of com.google.caja.lexer.TokenConsumer

        return false;
    }
  }

  public void render(RenderContext rc) {
    TokenConsumer out = rc.getOut();
    out.mark(getFilePosition());
    switch (op.getType()) {
      case PREFIX:
        out.consume(op.getSymbol());
        renderParam(0, rc);
        if (op == Operator.CONSTRUCTOR) {
          // We emit zero-arg constructors without (), because it's shorter,
          // but that has implications in parenthesize() below.
          int n = children().size();
          if (1 < n) {
            out.consume("(");
            for (int k = 1; k < n; k++) {
              if (1 < k) { out.consume(","); }
              renderParam(k, rc);
            }
            out.consume(")");
          }
        }
        break;
      case POSTFIX:
        renderParam(0, rc);
        out.mark(FilePosition.endOfOrNull(getFilePosition()));
        out.consume(op.getSymbol());
        break;
      case INFIX:
        renderParam(0, rc);
        switch (getOperator()) {
          default:
            // These spaces are necessary for security.
            // If they are not present, then rendered javascript might include
            // the strings ]]> or </script> which would prevent it from being
            // safely embedded in HTML or XML.
            out.consume(" ");
            out.consume(op.getSymbol());
            out.consume(" ");
            renderParam(1, rc);
            break;
          case MEMBER_ACCESS:
            renderMemberAccess(rc);
            break;
          case COMMA:
            out.consume(op.getSymbol());
            renderParam(1, rc);
            break;
        }
        break;
      case BRACKET:
        // Note that FUNCTION_CALL is a BRACKET operator; this is why we can
        // have any number of child expressions, not just two.
        renderParam(0, rc);
        out.consume(op.getOpeningSymbol());
        boolean seen = false;
        for (ParseTreeNode e : children().subList(1, children().size())) {
          if (seen) {
            out.consume(",");
          } else {
            seen = true;
          }
          // make sure that comma operators are properly escaped
          if (!parenthesize(Operator.COMMA, false, (Expression) e)) {
            e.render(rc);
          } else {
            out.consume("(");
            e.render(rc);
            out.mark(FilePosition.endOfOrNull(e.getFilePosition()));
            out.consume(")");
          }
        }
        out.mark(FilePosition.endOfOrNull(getFilePosition()));
        out.consume(op.getClosingSymbol());
        break;
      case TERNARY:
        renderParam(0, rc);
        out.consume(op.getOpeningSymbol());
        out.consume(" ");
        renderParam(1, rc);
        out.consume(op.getClosingSymbol());
        out.consume(" ");
        renderParam(2, rc);
        break;
    }
  }
View Full Code Here

Examples of com.google.caja.lexer.TokenConsumer

        break;
    }
  }

  private void renderParam(int i, RenderContext rc) {
    TokenConsumer out = rc.getOut();
    ParseTreeNode e = children().get(i);
    out.mark(e.getFilePosition());
    if (!parenthesize(op, 0 == i, (Expression) e)) {
      e.render(rc);
    } else {
      out.consume("(");
      e.render(rc);
      out.mark(FilePosition.endOfOrNull(getFilePosition()));
      out.consume(")");
    }
  }
View Full Code Here

Examples of com.google.caja.lexer.TokenConsumer

      out.consume(")");
    }
  }

  private void renderMemberAccess(RenderContext rc) {
    TokenConsumer out = rc.getOut();
    if (isKeywordAccess()) {
      out.consume(Operator.SQUARE_BRACKET.getOpeningSymbol());
      StringLiteral.renderUnquotedValue(getMemberName(), rc);
      out.consume(Operator.SQUARE_BRACKET.getClosingSymbol());
    } else {
      out.consume(op.getSymbol());
      renderParam(1, rc);
    }
  }
View Full Code Here

Examples of com.google.caja.lexer.TokenConsumer

  @Override
  public Object getValue() { return null; }

  public void render(RenderContext rc) {
    TokenConsumer out = rc.getOut();
    out.mark(getFilePosition());
    List<? extends ParseTreeNode> children = children();
    int i = 0;
    int n = children.size();
    for (; i + 2 <= n; i += 2) {
      Expression condition = (Expression) children.get(i);
      Statement body = (Statement) children.get(i + 1);

      if (i != 0) {
        out.consume("else");
      }
      out.consume("if");
      out.consume("(");
      condition.render(rc);
      out.consume(")");
      boolean hanging = body.hasHangingConditional();
      if (hanging) { out.consume("{"); }
      body.renderBlock(rc, i + 2 < n);
      if (hanging) { out.consume("}"); }
    }
    if (i < n) {
      Statement body = (Statement) children.get(i);
      out.consume("else");
      body.renderBlock(rc, false);
    }
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.