!7 sclass Entry { S text, pattern; Matches matches; } cmodule 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 { LS patterns = dm_crudCollectField_ref(refTexts); LS texts = dm_crudCollectField_ref(refPatterns); new L data; loop: for (fS s : texts) for (fS pat : patterns) flexMatchIC_iterate(pat, s, voidfunc(Matches m) { data.add(nu(Entry, text := s, pattern := pat, matches := m)); if (l(data) >= max) break loop; }); setData(data); } }