sS tok_formatDollarVars(S pat, MapSO vars) { if (empty(vars)) ret pat; MapSO vars2 = mapKeys addDollarPrefix(vars); ifdef tok_formatDollarVars_debug printVars tok_formatDollarVars(+pat, +vars, +vars2); endifdef LS tok = javaTok(pat); for (int i = 1; i < l(tok); i += 2) { S var = tok.get(i); if (!isIdentifier(var)) continue; S value = strOrNull(vars2.get(var)); if (value != null) tok.set(i, value); } S output = join(tok); ifdef tok_formatDollarVars_debug printVars tok_formatDollarVars(+output); endifdef ret output; } sS tok_formatDollarVars(S pat, O... _) { ret tok_formatDollarVars(pat, paramsToMap(_)); }