!7 sclass Entry { S text, pattern; S grouping; } cmodule2 MatchAll > DynObjectTable { S refTexts, refPatterns; int max = 1000; visualize { ret northAndCenter(withMargin(makeForm2( "Texts (CRUD field reference)" := dm_textField('refTexts), "Patterns (CRUD field reference)" := dm_textField('refPatterns), rThread calc )), super.visualize()); } void calc enter { final LS texts = dm_crudCollectField_ref(refTexts); final LS patterns = dm_crudCollectField_ref(refPatterns); print("Have " + n2(texts, "text") + ", " + n2(patterns, "pattern")); final new L data; withCancelPoint(voidfunc(final CancelPoint cp) { for (fS s : texts) for (fS pat : patterns) flexMatchIC_iterate(pat, s, voidfunc(Matches m) { data.add(nu(Entry, text := s, pattern := pat, grouping := matchedAsteriskPatternToGrouping(pat, m))); if (l(data) >= max) cancelTo(cp); }); }); setData(data); } }