Ejemplo n.º 1
0
  @Override
  public void filter(Reader reader, Writer writer) {
    try {
      CompilerEnvirons config = new CompilerEnvirons();
      // 'float' is otherwise considered a reserved keyword (usage: element.style.float = 'left').
      config.setReservedKeywordAsIdentifier(true);
      // Force the parser to build the parent scope chain.
      config.setIdeMode(true);
      Parser parser = new Parser(config);
      AstRoot root = parser.parse(reader, null, 0);

      // Filter the AST.
      for (NodeVisitor filter : filters) {
        root.visit(filter);
      }

      // Back to source.
      writer.write(root.toSource());
    } catch (IOException e) {
      LOGGER.error("Failed to rewrite JavaScript code.", e);
    }
  }