CIDR:Debugger: correctly escaping and displaying values and expressions

This commit is contained in:
Anton Makeev
2011-03-22 18:26:37 +01:00
parent 71903becc2
commit 45a110cacd
2 changed files with 15 additions and 8 deletions
@@ -493,6 +493,15 @@ public class StringUtil {
@NotNull String str,
@Nullable String additionalChars,
@NotNull @NonNls StringBuilder buffer) {
return escapeStringCharacters(length, str, additionalChars, true, buffer);
}
@NotNull
public static StringBuilder escapeStringCharacters(int length,
@NotNull String str,
@Nullable String additionalChars,
boolean escapeSlash,
@NotNull @NonNls StringBuilder buffer) {
for (int idx = 0; idx < length; idx++) {
char ch = str.charAt(idx);
switch (ch) {
@@ -516,12 +525,11 @@ public class StringUtil {
buffer.append("\\r");
break;
case '\\':
buffer.append("\\\\");
break;
default:
if (additionalChars != null && additionalChars.indexOf(ch) > -1) {
if (escapeSlash && ch == '\\') {
buffer.append("\\\\");
}
else if (additionalChars != null && additionalChars.indexOf(ch) > -1) {
buffer.append("\\").append(ch);
}
else if (Character.isISOControl(ch)) {
@@ -76,8 +76,7 @@ public class XValueNodeImpl extends XValueContainerNode<XValue> implements XValu
}
public void setPresentation(@NonNls final String name, @Nullable final Icon icon, @NonNls @Nullable final String type, @NonNls @NotNull final String separator,
@NonNls @NotNull final String value,
final boolean hasChildren) {
@NonNls @NotNull final String value, final boolean hasChildren) {
DebuggerUIUtil.invokeOnEventDispatch(new Runnable() {
public void run() {
setIcon(icon);
@@ -116,7 +115,7 @@ public class XValueNodeImpl extends XValueContainerNode<XValue> implements XValu
final StringBuilder builder = StringBuilderSpinAllocator.alloc();
String value;
try {
StringUtil.escapeStringCharacters(myValue.length(), myValue, null, builder);
StringUtil.escapeStringCharacters(myValue.length(), myValue, null, false, builder);
value = builder.toString();
}
finally {