!7 sclass Entry { //S originalRule, replacements, modifiedRule; S rule; S judgement = ""; S ruleID; } cmodule TestRuleEngine2 > DynObjectTable { S input; start { set fieldsInOrder; } 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 modifiedRule = r.applyMapping().asText(); ret nu(Entry, rule := modifiedRule, ruleID := r.rule.globalID); })); } }