!7 sclass Entry { S pattern; Map params; // null if not matched sS _fieldOrder = "pattern params"; } cmodule MatchingInputPatterns > DynObjectTable { start { set fieldsInOrder; dm_onTopInput_q(vf process); process(dm_topInput()); } void process(S s) { LS patterns = collect pattern((L) dm_requireAndCallModule("#1020518/InputPatterns", 'data)); print("Processing input " + quote(s) + " with " + n2(patterns, "pattern") + ": " + patterns); new Matches m; data = new L; for (S pat : patterns) if (match(pat, s, m)) data.add(nu(Entry, pattern := pat, params := matchesToMap(m))); setData(data); } }