static S replaceVars_withDollarQ(S s, SS map) { ret empty(map) ? s : join(replaceVars_withDollarQ(javaTok(s), map)); } static LS replaceVars_withDollarQ(LS tok, SS map) { if (empty(map)) ret tok; tok = cloneList(tok); for (int i = 1; i < l(tok); i +=2) { S t = tok.get(i); S value = map.get(t); if (value != null) tok.set(i, value); else if (t.startsWith("$_q_")) { value = map.get("$" + substring(t, 4)); if (value != null) tok.set(i, quote(value)); } } ret tok; }