svoid dm_gazelle_wireStatementConditions() { for (T3 t : dm_gazelle_allRulesWithComment("in 2 = statement")) dm_gazelle_wireStatementConditions(/*assertGlobalID*/(t.c)); } svoid dm_gazelle_wireStatementConditions(S ruleID) pcall { PairS p = dm_textAndCommentForRule(ruleID); LS lines = tlft(p.a); new Matches m; LS comments = lines(p.b); bool change = false; for i over comments: { if (match("in * = statement", comments.get(i), m)) { int line = parseInt($1); S s = dropPrefixTrim("+", get(lines, line-1)); if (empty(s) || startsWith(s, "=>")) continue; // avoid any weird stuff S ruleID2 = dm_gazelle_findRuleForStatementCondition(s); if (ruleID2 == null) { print("No statement rule found for: " + s + ", making one"); ruleID2 = pairA(dm_gazelle_addRuleWithComment(s + "\n=> statement", "in = statement\n" + "made for rule " + ruleID + "\n" + p.b); } comments.set(i, "in " + line + " = statement " + ruleID2); set change; } } if (change) dm_gazelle_setRuleComments_verbose(ruleID, lines(comments)); }