// "optPar int bla = 5;" => "int bla = optPar bla(_, 5);" svoid tok_optPar(LS tok) { jreplace(tok, "boolPar ", "optPar bool $2", tokCondition { ret eqGetOneOf(tok, i+5, "=", ";"); }); int i; while ((i = jfindOneOf(tok, "optPar ", "optPar <", "optPar [")) >= 0) { int iSemicolon = tok_findEndOfStatement(tok, i)-1; int iEquals = indexOf_between(tok, "=", i, iSemicolon); clearTokens(tok, i, i+2); // drop optPar if (iEquals < 0) { // no initializer S var = tok.get(iSemicolon-2); S type = joinSubList(tok, i+2, iSemicolon-3); if (eqOneOf(type, 'bool, 'boolean)) tok.set(iSemicolon, " = boolPar " + var + "(_);"); else tok.set(iSemicolon, " = cast optPar " + var + "(_);"); } else { S var = tok.get(iEquals-2); tok.set(iEquals, "= optPar " + var + "(_, "); tok.set(iSemicolon, ");"); } reTok(tok, i, iSemicolon+1); } }