public Node applyRules(Node node, ArrayList<RewriteRule> rules) { modified = true; int count = 0; while (modified) { count++; if (count > MAX_ITERATIONS) { throw new RuntimeException("Rewriter hangs!"); } modified = false; node = Traverse.transform( node, n -> { for (RewriteRule rule : rules) { Optional<Map<Hole, Node>> unifier = Unifier.unify(rule.getPattern(), n); if (unifier.isPresent()) { modified = true; return rule.apply(n, unifier.get()); } } return n; }); } return node; }
public void testGetPattern() { String pattern = "pattern"; RewriteRule rule = new ApacheRewriteRule(pattern, "a", "b"); assertEquals(rule.getPattern(), pattern); }