mirror of
https://github.com/carlrobertoh/ProxyAI.git
synced 2026-05-21 11:05:59 +00:00
87 lines
2.4 KiB
Java
87 lines
2.4 KiB
Java
package ee.carlrobert.codegpt;
|
|
|
|
import com.intellij.openapi.application.ApplicationManager;
|
|
import com.intellij.openapi.editor.Document;
|
|
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
|
import com.intellij.openapi.util.Computable;
|
|
import com.intellij.openapi.vfs.VirtualFile;
|
|
import ee.carlrobert.codegpt.util.file.FileUtil;
|
|
import java.io.File;
|
|
import java.util.Objects;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
|
|
public record ReferencedFile(String fileName, String filePath, String fileContent,
|
|
boolean directory) {
|
|
|
|
public ReferencedFile(String fileName, String filePath, String fileContent) {
|
|
this(fileName, filePath, fileContent, false);
|
|
}
|
|
|
|
public ReferencedFile(String fileName, String filePath, String fileContent, boolean directory) {
|
|
this.fileName = fileName;
|
|
this.filePath = filePath;
|
|
this.fileContent = fileContent;
|
|
this.directory = directory;
|
|
}
|
|
|
|
public static ReferencedFile from(File file) {
|
|
return new ReferencedFile(
|
|
file.getName(),
|
|
file.getPath(),
|
|
FileUtil.readContent(file),
|
|
file.isDirectory()
|
|
);
|
|
}
|
|
|
|
public static ReferencedFile from(VirtualFile virtualFile) {
|
|
return new ReferencedFile(
|
|
virtualFile.getName(),
|
|
virtualFile.getPath(),
|
|
getVirtualFileContent(virtualFile),
|
|
virtualFile.isDirectory()
|
|
);
|
|
}
|
|
|
|
private static String getVirtualFileContent(VirtualFile virtualFile) {
|
|
if (virtualFile.isDirectory()) {
|
|
return "";
|
|
}
|
|
|
|
var documentManager = FileDocumentManager.getInstance();
|
|
var document = ApplicationManager.getApplication()
|
|
.runReadAction((Computable<Document>) () -> documentManager.getDocument(virtualFile));
|
|
if (document != null && documentManager.isDocumentUnsaved(document)) {
|
|
return document.getText();
|
|
}
|
|
return FileUtil.readContent(virtualFile);
|
|
}
|
|
|
|
public String getFileExtension() {
|
|
Pattern pattern = Pattern.compile("[^.]+$");
|
|
Matcher matcher = pattern.matcher(fileName);
|
|
|
|
if (matcher.find()) {
|
|
return matcher.group();
|
|
}
|
|
return "";
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object o) {
|
|
if (this == o) {
|
|
return true;
|
|
}
|
|
if (o == null || getClass() != o.getClass()) {
|
|
return false;
|
|
}
|
|
|
|
ReferencedFile that = (ReferencedFile) o;
|
|
return Objects.equals(filePath, that.filePath);
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return Objects.hash(filePath);
|
|
}
|
|
}
|