feat(BaseLangDoc): MergeDoc skip doc same when not set

This commit is contained in:
林万程
2024-01-30 19:48:17 +08:00
parent baa2fe1dfc
commit eb52684841
2 changed files with 37 additions and 29 deletions

View File

@@ -93,37 +93,14 @@ public abstract class BaseLangDoc extends EditorLinePainter {
return null;
}
// before doc
refElement = Prev.prevRefChild(info, refElement, refClass);
if (refElement == null) {
@Nullable PsiElement beforeRefElement = Prev.prevRefChild(info, refElement, refClass);
if (beforeRefElement == null) {
return doc;
}
PsiElement parent = refElement.getParent();
@Nullable String before = refElementDoc(info, parent);
if (before != null) {
doc = mergeDoc(refElement.getText(), text, info.appSettings.getToSet, before, doc);
}
return doc;
}
@NotNull
private String mergeDoc(@NotNull String beforeText, @NotNull String text,
boolean getToSet, String before, String doc) {
if (beforeText.startsWith("set")) {
beforeText = beforeText.substring(3);
if (text.startsWith("get")) {
text = text.substring(3);
} else if (text.startsWith("is")) {
text = text.substring(2);
}
boolean same = beforeText.equals(text);
if (getToSet) {
// because lambda is -> or =>
doc = doc + (same ? " ==> " : " --> ") + before;
} else {
doc = before + (same ? " <== " : " <-- ") + doc;
}
} else {
doc = before + " | " + doc;
PsiElement parent = beforeRefElement.getParent();
@Nullable String beforeDoc = refElementDoc(info, parent);
if (beforeDoc != null) {
doc = MergeDoc.mergeDoc(beforeRefElement.getText(), text, beforeDoc, doc, info.appSettings.getToSet);
}
return doc;
}

View File

@@ -0,0 +1,31 @@
package io.github.linwancen.plugin.show.lang.base;
import org.jetbrains.annotations.NotNull;
public class MergeDoc {
@NotNull
static String mergeDoc(@NotNull String beforeText, @NotNull String text,
@NotNull String beforeDoc, @NotNull String doc, boolean getToSet) {
if (!beforeText.startsWith("set")) {
// doc same
if (beforeDoc.equals(doc)) {
return doc;
}
return beforeDoc + " | " + doc;
}
beforeText = beforeText.substring(3);
if (text.startsWith("get")) {
text = text.substring(3);
} else if (text.startsWith("is")) {
text = text.substring(2);
}
// method name, not doc same
boolean same = beforeText.equals(text);
if (getToSet) {
// because lambda is -> or =>
return doc + (same ? " ==> " : " --> ") + beforeDoc;
} else {
return beforeDoc + (same ? " <== " : " <-- ") + doc;
}
}
}