Package com.google.caja.lexer

Examples of com.google.caja.lexer.TokenConsumer


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

  @Override
  public void renderBlock(RenderContext rc, boolean terminate) {
    TokenConsumer out = rc.getOut();
    out.mark(getFilePosition());
    out.consume("{");
    renderBody(rc);
    out.consume("}");
  }
View Full Code Here


    renderBody(rc);
    out.consume("}");
  }

  public void renderBody(RenderContext rc) {
    TokenConsumer out = rc.getOut();
    for (Statement stmt : children()) {
      out.mark(stmt.getFilePosition());
      stmt.render(rc);
      if (!stmt.isTerminal()) {
        out.mark(FilePosition.endOfOrNull(stmt.getFilePosition()));
        out.consume(";");
      }
    }
    out.mark(FilePosition.endOfOrNull(getFilePosition()));
  }
View Full Code Here

  @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(":");
    }
    getBody().render(rc);
  }
View Full Code Here

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

  public void render(RenderContext rc) {
    TokenConsumer out = rc.getOut();
    out.mark(getFilePosition());
    out.consume("catch");
    out.consume("(");
    out.mark(exception.getFilePosition());
    exception.getIdentifier().render(rc);
    out.consume(")");
    body.renderBlock(rc, false);
  }
View Full Code Here

  @Override
  public Boolean conditionResult() { return true; }

  public void render(RenderContext rc) {
    TokenConsumer out = rc.getOut();
    out.mark(getFilePosition());
    out.consume("{");
    boolean seen = false;
    for (ObjProperty prop : children()) {
      if (seen) {
        out.consume(",");
        out.consume("\n");
      } else {
        seen = true;
      }
      prop.render(rc);
    }
    out.mark(FilePosition.endOfOrNull(getFilePosition()));
    out.consume("}");
  }
View Full Code Here

    r.getOut().consume(value);
  }

  private static String render(ParseTreeNode n, boolean minify) {
    StringBuilder buf = new StringBuilder();
    TokenConsumer tc;
    if (minify) {
      tc = new JsMinimalPrinter(new Concatenator(buf));
    } else {
      tc = new JsPrettyPrinter(new Concatenator(buf));
    }
    RenderContext rc = new RenderContext(tc);
    n.render(rc);
    tc.noMoreTokens();
    return buf.toString();
  }
View Full Code Here

      throw new IllegalStateException();
    }
  }

  public void render(RenderContext r) {
    TokenConsumer out = r.getOut();
    out.mark(getFilePosition());
    out.consume("get");
    out.consume(" ");
    // ES5 allows quoted property names after get/set, but many ES3
    // implementations that implement a getter/setter abbreviated syntax
    // do not, and it introduces no ambiguity.
    renderPropertyName(r, true);
    FunctionConstructor fn = getFunction();
View Full Code Here

  }

  protected final void renderPropertyName(
      RenderContext rc, boolean preferUnquoted) {
    StringLiteral key = (StringLiteral) children().get(0);
    TokenConsumer out = rc.getOut();
    boolean unquoted = preferUnquoted;
    switch (rc.propertyNameQuotingMode()) {
      case NO_QUOTES: unquoted = true; break;
      case PRESERVE_QUOTES:
        String name = key.getValue();
        if (name.length() == 0) {
          unquoted = true;
        } else {
          char ch = name.charAt(0);
          if (ch != '"' && ch != '\'') {
            unquoted = true;
          }
        }
        break;
      default: break;
    }
    if (unquoted || preferUnquoted) {
      String uqVal = key.getUnquotedValue();
      if (ParserBase.isJavascriptIdentifier(uqVal)
          && !("get".equals(uqVal) || "set".equals(uqVal))) {
        out.mark(key.getFilePosition());
        out.consume(uqVal);
        return;
      }
    }
    key.render(rc);
  }
View Full Code Here

    return value;
  }

  @Override
  public void render(RenderContext rc) {
    TokenConsumer out = rc.getOut();
    out.mark(getFilePosition());

    String body = value.getMatchText();
    String mods = value.getModifiers();
    if ("".equals(body) || !areRegexpModifiersValid(mods)) {
      // (new (/./.constructor))('', 'g')
      out.consume("(");
      out.consume("new");
      out.consume("(");
      out.consume("/./");
      out.consume(".");
      out.consume("constructor");
      out.consume(")");
      out.consume("(");
      StringLiteral.renderUnquotedValue(body, rc);
      out.consume(",");
      StringLiteral.renderUnquotedValue(mods, rc);
      out.consume(")");
      out.consume(")");
    } else {
      StringBuilder sb = new StringBuilder();
      sb.append('/');
      Escaping.normalizeRegex(body, sb);
      sb.append('/');
      sb.append(mods);
      out.consume(sb.toString());
    }
  }
View Full Code Here

  public Statement getBody() { return body; }
  public Statement getInitializer() { return this.initializer; }
  public Statement getIncrement() { return this.increment; }

  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("(");
    if (!(initializer instanceof Noop)) { initializer.render(rc); }
    out.consume(JsMinimalPrinter.NOOP);
    if (!(condition instanceof BooleanLiteral
          && ((BooleanLiteral) condition).getValue())) {
      condition.render(rc);
    }
    out.consume(JsMinimalPrinter.NOOP);
    if (!(increment instanceof Noop)) { increment.render(rc); }
    out.consume(")");
    getBody().renderBlock(rc, false);
  }
View Full Code Here

TOP

Related Classes of com.google.caja.lexer.TokenConsumer

Copyright © 2018 www.massapicom. 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.