import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.JDOMUtil;
+import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vcs.FileStatus;
import com.intellij.psi.PsiElement;
import com.intellij.util.ArrayUtil;
import java.io.*;
import java.util.*;
-import java.util.regex.Matcher;
/**
* @author max
@NonNls final String template = description.getDescriptionTemplate();
int line = description instanceof ProblemDescriptor ? ((ProblemDescriptor)description).getLineNumber() : -1;
final String text = description instanceof ProblemDescriptor ? ((ProblemDescriptor)description).getPsiElement().getText() : "";
- @NonNls String problemText = template.replaceAll("#ref", Matcher.quoteReplacement(text)).replaceAll(" #loc ", " ");
+ @NonNls String problemText = StringUtil.replace(StringUtil.replace(template, "#ref", StringUtil.quoteReplacement(text)), " #loc ", " ");
Element element = refEntity.getRefManager().export(refEntity, parentNode, line);
@NonNls Element problemClassElement = new Element(InspectionsBundle.message("inspection.export.results.problem.element.tag"));
import com.intellij.CommonBundle;
import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.TextRange;
import com.intellij.util.ArrayUtil;
import com.intellij.util.Function;
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.util.text.StringUtil");
@NonNls private static final String VOWELS = "aeiouy";
+ private StringUtil() {
+ }
+
public static String replace(@NonNls @NotNull String text, @NonNls @NotNull String oldS, @NonNls @Nullable String newS) {
return replace(text, oldS, newS, false);
}
return s.substring(1, s.length() - 1);
}
+ /**
+ * This is just an optimized version of Matcher.quoteReplacement
+ */
+ public static String quoteReplacement(String s) {
+ boolean needReplacements = false;
+
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if (c == '\\' || c == '$') {
+ needReplacements = true;
+ break;
+ }
+ }
+
+ if (!needReplacements) return s;
+
+ StringBuilder sb = new StringBuilder(s.length() * 6 / 5);
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if (c == '\\') {
+ sb.append('\\');
+ sb.append('\\');
+ }
+ else if (c == '$') {
+ sb.append('\\');
+ sb.append('$');
+ }
+ else {
+ sb.append(c);
+ }
+ }
+ return sb.toString();
+ }
+
private static void unescapeStringCharacters(int length, @NotNull String s, @NotNull StringBuilder buffer) {
boolean escaped = false;
for (int idx = 0; idx < length; idx++) {