!7 sclass Entry { S text; } module ELERewrites > DynObjectTable { transient S input; transient Set rewrites = ciSet(); start { doEvery(1.0, r grab); } void grab enter { if (!ele_on()) ret; LS tok = javaTokNPunctuationWithBrackets(ele_getInput()); setList(mapI(countIterator_exclusive(1, countTokens(tok)+1), i -> nu Entry(text := getSentencePrefix(tok, i), wordsTaken := i + "/" + countTokens(tok)))); } // API void setInput(S input) q { if (setField(+input)) clearRewrites(); } void clearRewrites() { rewrites.clear(); clear(); } void addRewrite(S input, S text) q { if (eq(input, ELERewrites.this.input) && rewrites.add(text)) add(nu Entry(+text)); } }