@Override public boolean matches(Node node, NodeMetadata metadata) { return !matcher.matches(node, metadata); } };
@Override public boolean matches(Node node, NodeMetadata metadata) { for (Matcher m : matchers) { if (!m.matches(node, metadata)) { return false; } } return true; } };
@Override public boolean matches(Node node, NodeMetadata metadata) { for (Matcher m : matchers) { if (m.matches(node, metadata)) { return true; } } return false; } };
@Override public boolean matches(Node node, NodeMetadata metadata) { return node.isAssign() && rhsMatcher.matches(node.getLastChild(), metadata); } };
@Override public boolean matches(Node node, NodeMetadata metadata) { // TODO(mknichel): Handle the case when functions are applied through .call or .apply. return node.isCall() && propertyAccess(name).matches(node.getFirstChild(), metadata); } };
private Node findGoogRequireNode(Node n, NodeMetadata metadata, String namespace) { Node script = NodeUtil.getEnclosingScript(n); if (script != null) { Node child = script.getFirstChild(); while (child != null) { if (child.isExprResult() && child.getFirstChild().isCall()) { // TODO(mknichel): Replace this logic with a function argument // Matcher when it exists. Node grandchild = child.getFirstChild(); if (Matchers.functionCall("goog.require").matches(child.getFirstChild(), metadata) && grandchild.getLastChild().isString() && namespace.equals(grandchild.getLastChild().getString())) { return child; } } child = child.getNext(); } } return null; }