fix: tree file to class only xml and json. fixed #57 #23

This commit is contained in:
林万程
2025-01-31 22:07:36 +08:00
parent 49147b0e7b
commit 28b089fbd1
3 changed files with 15 additions and 5 deletions

View File

@@ -59,7 +59,7 @@ public class JsonJumpJava extends PsiReferenceContributor {
@NotNull Project project = element.getProject(); @NotNull Project project = element.getProject();
@NotNull List<PsiField> psiFields = new ArrayList<>(); @NotNull List<PsiField> psiFields = new ArrayList<>();
@NotNull List<PsiField> tips = new ArrayList<>(); @NotNull List<PsiField> tips = new ArrayList<>();
@NotNull PsiClass[] psiClasses = PsiClassUtils.encClass(virtualFile, project); @NotNull PsiClass[] psiClasses = PsiClassUtils.fileToClasses(virtualFile, project);
@NotNull List<String> jsonPath = jsonPath(jsonProp); @NotNull List<String> jsonPath = jsonPath(jsonProp);
put(project, psiFields, tips, psiClasses, jsonPath, jsonPath.size() - 1); put(project, psiFields, tips, psiClasses, jsonPath, jsonPath.size() - 1);

View File

@@ -1,7 +1,13 @@
package io.github.linwancen.plugin.show.java.doc; package io.github.linwancen.plugin.show.java.doc;
import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*; import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiClassOwner;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiDocCommentOwner;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiPackage;
import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.javadoc.PsiDocComment;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@@ -59,7 +65,7 @@ public class OwnerToPsiDocUtils {
// for "xxx ClassName.xxx" // for "xxx ClassName.xxx"
if (psiClasses.length == 0) { if (psiClasses.length == 0) {
VirtualFile virtualFile = psiFile.getVirtualFile(); VirtualFile virtualFile = psiFile.getVirtualFile();
psiClasses = PsiClassUtils.encClass(virtualFile, psiFile.getProject()); psiClasses = PsiClassUtils.fileToClasses(virtualFile, psiFile.getProject());
} }
for (@NotNull PsiClass psiClass : psiClasses) { for (@NotNull PsiClass psiClass : psiClasses) {
@Nullable PsiDocComment docComment = srcOrByteCodeDoc(psiClass); @Nullable PsiDocComment docComment = srcOrByteCodeDoc(psiClass);

View File

@@ -20,8 +20,12 @@ public class PsiClassUtils {
private static final Pattern JSON_PATTERN = Pattern.compile("[\\w.]*+$"); private static final Pattern JSON_PATTERN = Pattern.compile("[\\w.]*+$");
@NotNull @NotNull
public static PsiClass[] encClass(@NotNull VirtualFile virtualFile, @NotNull Project project) { public static PsiClass[] fileToClasses(@NotNull VirtualFile virtualFile, @NotNull Project project) {
@NotNull String fileName = virtualFile.getNameWithoutExtension(); @NotNull String fileName = virtualFile.getNameWithoutExtension();
@Nullable String ext = virtualFile.getExtension();
if (ext == null || (!ext.startsWith("json") && !ext.equals("xml"))) {
return PsiClass.EMPTY_ARRAY;
}
@NotNull Matcher matcher = JSON_PATTERN.matcher(fileName); @NotNull Matcher matcher = JSON_PATTERN.matcher(fileName);
if (!matcher.find()) { if (!matcher.find()) {
return PsiClass.EMPTY_ARRAY; return PsiClass.EMPTY_ARRAY;
@@ -35,7 +39,7 @@ public class PsiClassUtils {
return psiClasses; return psiClasses;
} }
// issue #23 // issue #23
if (virtualFile.getExtension() == null || className.length() != fileName.length()) { if (className.length() != fileName.length()) {
return PsiClass.EMPTY_ARRAY; return PsiClass.EMPTY_ARRAY;
} }
@NotNull char[] chars = fileName.toCharArray(); @NotNull char[] chars = fileName.toCharArray();