scope replaceKeywordBlock_dyn sinterface #IReplacer { S[] get(LS tok, int iOpening, int iClosing); } static LS replaceKeywordBlock_dyn(S bracket default "{", LS tok, S keyword, IReplacer func) { for (int i = 0; i < 1000; i++) { int idx = findCodeTokens(tok, keyword, bracket); if (idx < 0) break; int j = findEndOfBracketPart(tok, idx+2); S[] be = func?.get(tok, idx+2, j-1); tok.set(idx, unnull(first(be))); tok.set(idx+1, " "); tok.set(idx+2, ""); tok.set(j-1, unnull(second(be))); reTok(tok, idx, j); } ret tok; } end scope