in old/dekaf-core/src/main/java/org/jetbrains/dekaf/sql/Rewriters.java [25:46]
public static StringOperator replace(@NotNull final Map<String,String> map) {
return new StringOperator() {
@Override
public String apply(final String arg) {
if (map.isEmpty()) return arg;
if (arg == null) return null;
boolean was = false;
StringBuilder b = new StringBuilder(arg);
for (Map.Entry<String, String> entry : map.entrySet()) {
String what = entry.getKey();
String with = entry.getValue();
int p = b.indexOf(what);
while (p >= 0) {
b.replace(p, p+what.length(), with);
p = b.indexOf(what, p + with.length());
was = true;
}
}
return was ? b.toString() : arg;
}
};
}