print multiple links correctly

This commit is contained in:
Sergey Simonchik
2017-04-10 15:15:49 +03:00
parent 63481734f6
commit 9cab9c6e99
@@ -25,7 +25,7 @@ import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.StringTokenizer;
import java.util.*;
public final class TestProxyPrinterProvider {
@@ -96,18 +96,30 @@ public final class TestProxyPrinterProvider {
throw new RuntimeException("Error while applying " + myFilter + " to '"+line+"'", t);
}
if (result != null) {
for (Filter.ResultItem item : result.getResultItems()) {
defaultPrint(line.substring(0, item.getHighlightStartOffset()), contentType);
List<Filter.ResultItem> items = sort(result.getResultItems());
int lastOffset = 0;
for (Filter.ResultItem item : items) {
defaultPrint(line.substring(lastOffset, item.getHighlightStartOffset()), contentType);
String linkText = line.substring(item.getHighlightStartOffset(), item.getHighlightEndOffset());
printHyperlink(linkText, item.getHyperlinkInfo());
defaultPrint(line.substring(item.getHighlightEndOffset()), contentType);
lastOffset = item.getHighlightEndOffset();
}
defaultPrint(line.substring(lastOffset), contentType);
}
else {
defaultPrint(line, contentType);
}
}
@NotNull
private static List<Filter.ResultItem> sort(@NotNull List<Filter.ResultItem> items) {
if (items.size() <= 1) {
return items;
}
List<Filter.ResultItem> copy = new ArrayList<>(items);
Collections.sort(copy, Comparator.comparingInt(Filter.ResultItem::getHighlightStartOffset));
return copy;
}
}
}