Skip to content

Commit 59d5b23

Browse files
committed
feat(devins-language): add method to create DevInFile #101
Add a new method `fromString` to create a `DevInFile` from a given text in DevIn language. This method creates a new file with a unique filename using UUID, and then returns the created `DevInFile`. This method improves the flexibility and reusability of creating `DevInFile` instances.
1 parent 7b79a33 commit 59d5b23

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

exts/devins-lang/src/main/kotlin/cc/unitmesh/devti/language/provider/DevInsCustomAgentResponse.kt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,20 @@
11
package cc.unitmesh.devti.language.provider
22

33
import cc.unitmesh.devti.AutoDevNotifications
4-
import cc.unitmesh.devti.language.DevInLanguage
54
import cc.unitmesh.devti.language.compiler.DevInsCompiler
65
import cc.unitmesh.devti.language.psi.DevInFile
76
import cc.unitmesh.devti.provider.devins.AgentResponseProvider
87
import cc.unitmesh.devti.provider.devins.CustomAgentContext
98
import com.intellij.openapi.project.Project
10-
import com.intellij.psi.PsiFileFactory
11-
import java.util.*
129

1310

1411
class DevInsCustomAgentResponse : AgentResponseProvider {
1512
override val name: String = "DevIn"
1613

1714
override fun execute(project: Project, context: CustomAgentContext): String {
18-
val filename = "DevIns-${UUID.randomUUID()}.devin"
19-
20-
val devInFile = PsiFileFactory.getInstance(project)
21-
.createFileFromText(filename, DevInLanguage, context.response) as DevInFile
22-
15+
val devInFile = DevInFile.fromString(project, context.response)
2316
val devInsCompiler = DevInsCompiler(project, devInFile)
17+
2418
val result = devInsCompiler.compile()
2519

2620
AutoDevNotifications.notify(project, result.output)

exts/devins-lang/src/main/kotlin/cc/unitmesh/devti/language/psi/DevInFile.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@ import cc.unitmesh.devti.language.DevInFileType
44
import cc.unitmesh.devti.language.DevInLanguage
55
import com.intellij.extapi.psi.PsiFileBase
66
import com.intellij.openapi.fileTypes.FileType
7+
import com.intellij.openapi.project.Project
78
import com.intellij.psi.FileViewProvider
89
import com.intellij.psi.PsiFile
10+
import com.intellij.psi.PsiFileFactory
911
import com.intellij.psi.StubBuilder
1012
import com.intellij.psi.stubs.*
1113
import com.intellij.psi.tree.IStubFileElementType
14+
import java.util.*
1215

1316
class DevInFile(viewProvider: FileViewProvider) : PsiFileBase(viewProvider, DevInLanguage.INSTANCE) {
1417
override fun getFileType(): FileType = DevInFileType.INSTANCE
@@ -18,6 +21,16 @@ class DevInFile(viewProvider: FileViewProvider) : PsiFileBase(viewProvider, DevI
1821
override fun toString(): String = "DevInFile"
1922

2023
override fun getStub(): DevInFileStub? = super.getStub() as DevInFileStub?
24+
25+
companion object {
26+
fun fromString(project: Project, text: String): DevInFile {
27+
val filename = "DevIns-${UUID.randomUUID()}.devin"
28+
val devInFile = PsiFileFactory.getInstance(project)
29+
.createFileFromText(filename, DevInLanguage, text) as DevInFile
30+
31+
return devInFile
32+
}
33+
}
2134
}
2235

2336
class DevInFileStub(file: DevInFile?, private val flags: Int) : PsiFileStubImpl<DevInFile>(file) {

0 commit comments

Comments
 (0)