!7 sclass Entry { //S originalRule, replacements, modifiedRule; S rule, ruleID; } cmodule TestRuleEngine2 > DynObjectTable { S input; visualize { ret northAndCenterWithMargins( dm_textFieldAndSubmit_q('input, 'calc), super.visualize()); } void calc { S input = this.input; new RuleEngine2 engine; engine.addRules2(dm_allRulesFromRulesModuleWithCommentsAndIDs()); L l = ai_ruleEngine2_rulesForInput_3(engine, input); l = sortByMethodDesc qualitySum(l); setList(map(l, func(RuleEngine2_MatchedRule r) -> Entry { //S x = map(r.matchedLines, func(Pair p -> S {})); S modifiedRule := r.applyMapping().asText(); ret nu(Entry, /*originalRule := r.rule.asText(), replacements := str(r.map), +modifiedRule*/ rule := modifiedRule, ruleID := r.rule.globalID ); })); } }