Package com.google.caja.parser.js

Examples of com.google.caja.parser.js.IntegerLiteral


    Number n = rl.getValue();
    double dv = n.doubleValue();
    long lv = n.longValue();
    // Convert 1.0 to 1, but do not convert -0.0 to 0.
    if (dv == lv && (dv != 0d || (1 / dv) > 0)) {
      return new IntegerLiteral(rl.getFilePosition(), lv);
    }
    return rl;
  }
View Full Code Here


    List<? extends ParseTreeNode> children = returnThrowOrExprStmt.children();
    assert children.size() < 2;
    if (children.isEmpty()) {
      FilePosition pos = FilePosition.endOf(
          returnThrowOrExprStmt.getFilePosition());
      return Operation.create(pos, Operator.VOID, new IntegerLiteral(pos, 0));
    }
    return (Expression) children.get(0);
  }
View Full Code Here

  private static boolean isExpressionListTerminator(ParseTreeNode s) {
    return s instanceof ReturnStmt || s instanceof ThrowStmt;
  }

  private static Expression undef(FilePosition pos) {
    return Operation.create(pos, Operator.VOID, new IntegerLiteral(pos, 0));
  }
View Full Code Here

        AncestorChain<Reference> toReplace = read.parent.cast(Reference.class);
        Expression repl;
        if (value == null) {
          FilePosition fp = toReplace.node.getFilePosition();
          repl = Operation.create(fp, Operator.VOID, new IntegerLiteral(fp, 0));
        } else {
          repl = (Expression) value.clone();
        }
        toReplace.parent.cast(MutableParseTreeNode.class)
            .node.replaceChild(repl, toReplace.node);
View Full Code Here

    }
    List<ParseTreeNode> vals = new ArrayList<ParseTreeNode>();
    for (int i = 0; i < m.getParameters().length - 1; i++) {
      vals.add(QuasiBuilder.substV(""
          + "args[@idx];",
          "idx", new IntegerLiteral(FilePosition.UNKNOWN, i)));
    }
    vals.add(QuasiBuilder.substV(""
        + "Array.prototype.slice.call(args, @idx, args.length);",
        "idx", new IntegerLiteral(
            FilePosition.UNKNOWN, m.getParameters().length - 1)));
    return QuasiBuilder.substV(""
        + "function(args) { return [ @vals* ]; }",
        "vals", new ParseTreeNodeContainer(vals));
  }
View Full Code Here

    List<ParseTreeNode> unwraps = new ArrayList<ParseTreeNode>();
    for (int i = 0; i < m.getParameters().length; i++) {
      unwraps.add(QuasiBuilder.substV(""
          + "@taming.getBean(frame, args[@idx]);",
          "taming", getTamingObject(m.getParameters()[i].getType()),
          "idx", new IntegerLiteral(FilePosition.UNKNOWN, i)));
    }
    return QuasiBuilder.substV(""
        + "function (frame, args) {"
        + "  @arityCheck;"
        + "  args = @varArgsDestructuring(args);"
View Full Code Here

            + "  throw new TypeError(''"
            + "      + 'Method called with incorrect arity:'"
            + "      + ' expected at least ' + @num + ' arguments'"
            + "      + ' but was ' + args.length);"
            + "}",
            "num", new IntegerLiteral(
                FilePosition.UNKNOWN, m.getParameters().length - 1))
        : QuasiBuilder.substV(""
            + "if (args.length !== @num) {"
            + "  throw new TypeError(''"
            + "      + 'Method called with incorrect arity:'"
            + "      + ' expected ' + @num + ' arguments'"
            + "      + ' but was ' + args.length);"
            + "}",
            "num", new IntegerLiteral(
                FilePosition.UNKNOWN, m.getParameters().length));
  }
View Full Code Here

    for (U e : entries) {
      // Since enum values are public, we don't want Closure compiler
      // to rewrite them, so we need quoted keys.
      String quoted = StringLiteral.toQuotedValue(keyMaker.apply(e));
      keys.add(new StringLiteral(unk, quoted));
      values.add(new IntegerLiteral(unk, valueMaker.apply(e)));
    }
    return new ExpressionStmt(unk,
        (Expression) QuasiBuilder.substV(
            "html4.@i = { @k*: @v* };",
            "i", new Reference(new Identifier(unk, key)),
View Full Code Here

        if (ElKey.HTML_WILDCARD.equals(key.el)
            || schema.isElementAllowed(key.el)
            // Whitelisted to allow dynamic script loading via proxy
            || SCRIPT_SRC.equals(key)) {
          keys.add(StringLiteral.valueOf(unk, key.toString()));
          values.add(new IntegerLiteral(unk, A_TYPE_MAP.get(e.getValue())));
        }
      }
      definitions.appendChild(new ExpressionStmt(unk, (Expression)
          QuasiBuilder.substV(
              "html4.ATTRIBS = { @k*: @v* };",
              "k", new ParseTreeNodeContainer(keys),
              "v", new ParseTreeNodeContainer(values))));
    }

    definitions.appendChild(mapFromEnum(
        EnumSet.allOf(EFlag.class),
        "eflags",
        new Function<EFlag, String>() {
          public String apply(EFlag f) {
            return f.name();
          }
        },
        new Function<EFlag, Integer>() {
          public Integer apply(EFlag f) {
            return f.bitMask;
          }
        })
    );

    {
      List<StringLiteral> keys = new ArrayList<StringLiteral>();
      List<IntegerLiteral> values = new ArrayList<IntegerLiteral>();
      for (Map.Entry<ElKey, EnumSet<EFlag>> e : eflags.entrySet()) {
        ElKey key = e.getKey();
        int value = 0;
        for (EFlag f : e.getValue()) { value |= f.bitMask; }
        keys.add(StringLiteral.valueOf(unk, key.toString()));
        values.add(new IntegerLiteral(unk, value));
      }
      definitions.appendChild(new ExpressionStmt(unk, (Expression)
          QuasiBuilder.substV(
              "html4.ELEMENTS = { @k*: @v* };",
              "k", new ParseTreeNodeContainer(keys),
View Full Code Here

        "({ '@k*': @v*, baz: @boo })",
        "k", new ParseTreeNodeContainer(Arrays.asList(
            jsExpr(fromString("'foo'")), jsExpr(fromString("'bar'")))),
        "v", new ParseTreeNodeContainer(Arrays.asList(
            jsExpr(fromString("0")), jsExpr(fromString("1")))),
        "boo", new IntegerLiteral(FilePosition.UNKNOWN, 2));
    assertEquals(
        render(jsExpr(fromString("{ foo: 0, bar: 1, baz: 2 }"))),
        render(n));
  }
View Full Code Here

TOP

Related Classes of com.google.caja.parser.js.IntegerLiteral

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.