Package com.google.caja.lexer

Examples of com.google.caja.lexer.TokenConsumer


    super(pos, value);
  }

  @Override
  public void render(RenderContext r) {
    TokenConsumer tc = r.getOut();
    tc.mark(getFilePosition());
    tc.consume(getValue());
    if (tc instanceof EmbeddedJsExpressionTokenConsumer) {
      ((EmbeddedJsExpressionTokenConsumer) tc).endArrayElement();
    } else {
      // Emit a buster that will cause the CSS parser to error out but not out
      // of the current block.
      // This allows us to debug the output of this stage, but does not
      // compromise security if the CSS is rendered by naive code.
      tc.consume("UNSAFE_UNTRANSLATED_SUFFIX:;");
    }
  }
View Full Code Here


    return super.makeImmutable();
  }

  @Override
  public void render(RenderContext r) {
    TokenConsumer tc = r.getOut();
    tc.mark(getFilePosition());
    tc.consume("url(");
    if (tc instanceof EmbeddedJsExpressionTokenConsumer) {
      ((EmbeddedJsExpressionTokenConsumer) tc).consume(expr);
    } else {
      // Emit a buster that will cause the CSS parser to error out but not out
      // of the current block.
      // This allows us to debug the output of this stage, but does not
      // compromise security if the CSS is rendered by naive code.
      tc.consume("UNSAFE_JS_EXPRESSION_LITERAL:;");
    }
    tc.consume(")");
  }
View Full Code Here

      // Use the longest match attempted match to generate an error message
      Candidate best = resolver.getBestAttempt();
      int exprIdx = null != best ? best.exprIdx : 0;

      StringBuilder buf = new StringBuilder();
      TokenConsumer tc = new CssPrettyPrinter(buf);
      RenderContext rc = new RenderContext(tc);
      boolean needsSpace = false;
      int k = 0;
      for (CssTree child : expr.children()) {
        if (needsSpace) {
          buf.append(' ');
        }
        int len = buf.length();
        if (k++ == exprIdx) {
          buf.append(" ==>");
          child.render(rc);
          tc.noMoreTokens();
          buf.append("<== ");
        } else {
          child.render(rc);
        }
        needsSpace = (len < buf.length());
View Full Code Here

  private static RenderContext makeRenderContext(
      Appendable a, IOCallback cb,
      boolean pretty,
      boolean json) {
    TokenConsumer tc = pretty
        ? new JsPrettyPrinter(new Concatenator(a, cb))
        : new JsMinimalPrinter(new Concatenator(a, cb));
    return new RenderContext(tc).withJson(json);
  }
View Full Code Here

      }
      return media;
    }

    public void render(RenderContext r) {
      TokenConsumer out = r.getOut();
      out.mark(getFilePosition());
      out.consume("@");
      out.consume("import");
      out.consume(" ");
      getUri().render(r);

      List<? extends CssTree> media = getMedia();
      if (!media.isEmpty()) {
        out.consume(" ");
        renderCommaGroup(media, r);
      }
      out.consume(";");
      out.consume("\n");
    }
View Full Code Here

    @Override
    public String getValue() { return charset; }

    public void render(RenderContext r) {
      TokenConsumer out = r.getOut();
      out.mark(getFilePosition());
      out.consume("@");
      out.consume("charset");
      out.consume(" ");
      renderCssString(charset, r);
      out.consume(";");
      out.consume("\n");
    }
View Full Code Here

      }
      return media;
    }

    public void render(RenderContext r) {
      TokenConsumer out = r.getOut();
      out.mark(getFilePosition());
      out.consume("@");
      out.consume("media");
      out.consume(" ");
      List<? extends CssTree> children = children();
      int i = 0;
      while (i < children.size() && children.get(i) instanceof Medium) { ++i; }
      renderCommaGroup(children.subList(0, i), r);
      out.consume("{");
      for (CssTree ruleset : children.subList(i, children.size())) {
        ruleset.render(r);
      }
      out.mark(FilePosition.endOfOrNull(getFilePosition()));
      out.consume("}");
    }
View Full Code Here

    @Override
    public Name getValue() { return ident; }

    public void render(RenderContext r) {
      TokenConsumer out = r.getOut();
      out.mark(getFilePosition());
      out.consume("@");
      out.consume("page");
      if (null != ident) {
        out.consume(" ");
        renderCssIdent(ident.getCanonicalForm(), r);
      }
      List<? extends CssTree> children = children();
      if (children.get(0) instanceof PseudoPage) {
        children.get(0).render(r);
View Full Code Here

    public void render(RenderContext r) {
      // Start with a space to make sure that rendering couldn't introduce a
      // comment.  I know of no parse tree that would otherwise do this, but
      // comments could be used to introduce security holes.
      TokenConsumer out = r.getOut();
      out.mark(getFilePosition());
      out.consume(" ");
      out.consume("*");
    }
View Full Code Here

    public CssLiteral getRhsValue() {
      return children().isEmpty() ? null : (CssLiteral) children().get(1);
    }

    public void render(RenderContext r) {
      TokenConsumer out = r.getOut();
      out.mark(getFilePosition());
      out.consume("[");
      renderCssIdent(ident, r);
      List<? extends CssTree> children = children();
      if (!children.isEmpty()) {
        out.consume(" ");
        renderSpaceGroup(children, r);
      }
      out.mark(FilePosition.endOfOrNull(getFilePosition()));
      out.consume("]");
    }
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.