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 testGetOptions() { RewriteRule rule = new ApacheRewriteRule("a", "b", "0", "1"); assertEquals(rule.getOptions().length, 2); assertEquals(rule.getOptions()[0], "0"); assertEquals(rule.getOptions()[1], "1"); }
public void testGetSubstitution() { String substitution = "substitution"; RewriteRule rule = new ApacheRewriteRule("a", substitution); assertEquals(rule.getSubstitution(), substitution); }
public void testGetEmptyOptions() { RewriteRule rule = new ApacheRewriteRule("a", "b"); assertEquals(rule.getOptions().length, 0); }
public void testGetPattern() { String pattern = "pattern"; RewriteRule rule = new ApacheRewriteRule(pattern, "a", "b"); assertEquals(rule.getPattern(), pattern); }