!7 concept WordInfo { S word; int position; S fact, wordType; } cmodule InfoAboutWords > DynCRUD { S text, comment; visualize { ret northCenterSouthSections( "Input Text" := fontSizeTimes(1.25, dm_centeredTextField('text)), "Facts" := super.visualize(), "Tell me something about a word:" := dm_textFieldAndSubmit('comment, 'submitComment)); } void submitComment { S word = firstWord(comment); int i = indexOfIC_fullWord(text, word); if (i < 0) ret with print(quote(word) + " not found in sentence"); new Matches m; if (match_vbar("* is an adjective|* is an adjective here", comment, m)) cset(uniq_sync(WordInfo, +word, position := i), wordType := "adjective"); else uniq_sync(WordInfo, +word, position := i, fact := comment); } }