feat(JavaLangDoc): 2.14 java enum doc for Yes(1, "Yes") | java 枚举注释

This commit is contained in:
林万程
2024-01-12 21:45:20 +08:00
parent eaa8540266
commit d83ace24ab
9 changed files with 92 additions and 2 deletions

View File

@@ -8,6 +8,7 @@ import com.intellij.psi.javadoc.*;
import com.intellij.psi.util.PsiTreeUtil;
import io.github.linwancen.plugin.show.bean.LineInfo;
import io.github.linwancen.plugin.show.bean.SettingsInfo;
import io.github.linwancen.plugin.show.java.doc.EnumDoc;
import io.github.linwancen.plugin.show.java.doc.OwnerToPsiDocUtils;
import io.github.linwancen.plugin.show.java.doc.PsiMethodToPsiDoc;
import io.github.linwancen.plugin.show.java.line.OwnerToPsiDocSkip;
@@ -84,6 +85,9 @@ public class JavaLangDoc extends BaseTagLangDoc<PsiDocComment> {
if (info.appSettings.fromParam && resolve instanceof PsiParameter) {
return paramDoc((PsiParameter) resolve);
}
if (info.appSettings.enumDoc && resolve instanceof PsiEnumConstant) {
return EnumDoc.enumDoc((PsiEnumConstant) resolve);
}
return null;
}

View File

@@ -0,0 +1,32 @@
package io.github.linwancen.plugin.show.java.doc;
import com.intellij.psi.PsiEnumConstant;
import com.intellij.psi.PsiExpression;
import com.intellij.psi.PsiExpressionList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class EnumDoc {
/**
* Yes(1, "Yes") show 1-Yes
*/
@Nullable
public static String enumDoc(@NotNull PsiEnumConstant psiEnumConstant) {
@Nullable PsiExpressionList args = psiEnumConstant.getArgumentList();
if (args == null) {
return null;
}
@NotNull PsiExpression[] exps = args.getExpressions();
if (exps.length == 0) {
return null;
}
return Arrays.stream(exps)
.map(exp -> exp.getText().replace("\"", ""))
.collect(Collectors.joining("-"));
}
}

View File

@@ -37,6 +37,7 @@ public class AppSettingsComponent {
private final JBCheckBox getToSet = new JBCheckBox("get --> set ");
private final JBCheckBox fromNew = new JBCheckBox("java new ");
private final JBCheckBox fromParam = new JBCheckBox("java @param ");
private final JBCheckBox enumDoc = new JBCheckBox("java enum ");
private final JBCheckBox skipAnnotation = new JBCheckBox(ShowBundle.message("skip.anno"));
private final JBCheckBox skipAscii = new JBCheckBox(ShowBundle.message("skip.english"));
private final JBCheckBox skipBlank = new JBCheckBox(ShowBundle.message("skip.blank"));
@@ -90,7 +91,7 @@ public class AppSettingsComponent {
new JBLabel(ShowBundle.message("prefix")), lineEndPrefix);
FormBuilder formBuilder = FormBuilder.createFormBuilder()
.addSeparator()
.addComponent(JPanelFactory.of(fromNew, fromParam, getToSet, skipAnnotation, skipAscii, skipBlank), 1)
.addComponent(JPanelFactory.of(fromNew, fromParam, enumDoc, getToSet, skipAnnotation, skipAscii, skipBlank), 1)
.addSeparator()
.addComponent(text)
.addSeparator();
@@ -288,6 +289,14 @@ public class AppSettingsComponent {
fromParam.setSelected(newStatus);
}
public boolean getEnumDoc() {
return enumDoc.isSelected();
}
public void setEnumDoc(boolean newStatus) {
enumDoc.setSelected(newStatus);
}
public boolean getSkipAnnotation() {
return skipAnnotation.isSelected();
}

View File

@@ -64,6 +64,7 @@ public class AppSettingsConfigurable implements Configurable {
modified |= mySettingsComponent.getGetToSet() != settings.getToSet;
modified |= mySettingsComponent.getFromNew() != settings.fromNew;
modified |= mySettingsComponent.getFromParam() != settings.fromParam;
modified |= mySettingsComponent.getEnumDoc() != settings.enumDoc;
modified |= mySettingsComponent.getSkipAnnotation() != settings.skipAnnotation;
modified |= mySettingsComponent.getSkipAscii() != settings.skipAscii;
modified |= mySettingsComponent.getSkipBlank() != settings.skipBlank;
@@ -102,6 +103,7 @@ public class AppSettingsConfigurable implements Configurable {
settings.getToSet = mySettingsComponent.getGetToSet();
settings.fromNew = mySettingsComponent.getFromNew();
settings.fromParam = mySettingsComponent.getFromParam();
settings.enumDoc = mySettingsComponent.getEnumDoc();
settings.skipAnnotation = mySettingsComponent.getSkipAnnotation();
settings.skipAscii = mySettingsComponent.getSkipAscii();
settings.skipBlank = mySettingsComponent.getSkipBlank();
@@ -143,6 +145,7 @@ public class AppSettingsConfigurable implements Configurable {
mySettingsComponent.setGetToSet(settings.getToSet);
mySettingsComponent.setFromNew(settings.fromNew);
mySettingsComponent.setFromParam(settings.fromParam);
mySettingsComponent.setEnumDoc(settings.enumDoc);
mySettingsComponent.setSkipAnnotation(settings.skipAnnotation);
mySettingsComponent.setSkipAscii(settings.skipAscii);
mySettingsComponent.setSkipBlank(settings.skipBlank);

View File

@@ -58,6 +58,7 @@ public class AppSettingsState implements PersistentStateComponent<AppSettingsSta
public boolean getToSet = true;
public boolean fromNew = true;
public boolean fromParam = false;
public boolean enumDoc = true;
public boolean skipAnnotation = true;
public boolean skipAscii = !"en".equals(Locale.getDefault().getLanguage());
public boolean skipBlank = true;

View File

@@ -4,10 +4,12 @@ import io.github.linwancen.plugin.show.demo.java.obj.Anno;
import io.github.linwancen.plugin.show.demo.java.obj.Child;
import io.github.linwancen.plugin.show.demo.java.obj.Face;
import io.github.linwancen.plugin.show.demo.java.obj.Parent;
import io.github.linwancen.plugin.show.demo.java.obj.YesOrNoEnum;
@Anno
public class Ref implements Face {
public static void method() {
YesOrNoEnum enumDoc = YesOrNoEnum.YES;
Parent noneNewMethod = new Call();
Face noneNewDoc = new Ref();
Child child = new Child(true);

View File

@@ -0,0 +1,35 @@
package io.github.linwancen.plugin.show.demo.java.obj;
import java.util.LinkedHashMap;
public enum YesOrNoEnum {
YES("1", ""),
NO("0", ""),
;
public final String code;
public final String desc;
YesOrNoEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
@Override
public String toString() {
return code + '-' + desc;
}
private static final LinkedHashMap<String, YesOrNoEnum> map;
static {
map = new LinkedHashMap<>();
for (YesOrNoEnum value : values()) {
map.put(value.code, value);
}
}
public static YesOrNoEnum fromCode(String code) {
return map.get(code);
}
}