Skip to content

Commit 7f91dd7

Browse files
committed
feat(escaper): refactor createLiteralTextEscaper to use custom implementation
1 parent b5d808a commit 7f91dd7

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

exts/devins-lang/src/main/kotlin/cc/unitmesh/devti/language/parser/PatternElement.kt

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package cc.unitmesh.devti.language.parser
22

33
import com.intellij.extapi.psi.ASTWrapperPsiElement
44
import com.intellij.lang.ASTNode
5+
import com.intellij.openapi.util.TextRange
56
import com.intellij.psi.ElementManipulators
67
import com.intellij.psi.LiteralTextEscaper
78
import com.intellij.psi.PsiLanguageInjectionHost
@@ -16,6 +17,24 @@ class PatternElement(node: ASTNode) : ASTWrapperPsiElement(node), PsiLanguageInj
1617
}
1718

1819
override fun createLiteralTextEscaper(): LiteralTextEscaper<out PsiLanguageInjectionHost> {
19-
return LiteralTextEscaper.createSimple(this, false)
20+
return createSimple(this, false)
2021
}
2122
}
23+
24+
fun <T : PsiLanguageInjectionHost> createSimple(element: T, isOneLine: Boolean): LiteralTextEscaper<T> {
25+
return object : LiteralTextEscaper<T>(element) {
26+
override fun decode(rangeInsideHost: TextRange, outChars: StringBuilder): Boolean {
27+
outChars.append(rangeInsideHost.substring(myHost!!.text))
28+
return true
29+
}
30+
31+
override fun getOffsetInHost(offsetInDecoded: Int, rangeInsideHost: TextRange): Int {
32+
return rangeInsideHost.startOffset + offsetInDecoded
33+
}
34+
35+
override fun isOneLine(): Boolean {
36+
return isOneLine
37+
}
38+
}
39+
}
40+

exts/devins-lang/src/main/kotlin/cc/unitmesh/devti/language/parser/ShireGrepFuncCall.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class ShireGrepFuncCall(node: ASTNode) : DevInFuncCallImpl(node), PsiLanguageInj
1616
}
1717

1818
override fun createLiteralTextEscaper(): LiteralTextEscaper<out PsiLanguageInjectionHost> {
19-
return LiteralTextEscaper.createSimple(this, false)
19+
return createSimple(this, false)
2020
}
2121
}
2222

@@ -29,6 +29,6 @@ class ShireSedFuncCall(node: ASTNode) : DevInFuncCallImpl(node), PsiLanguageInje
2929
}
3030

3131
override fun createLiteralTextEscaper(): LiteralTextEscaper<out PsiLanguageInjectionHost> {
32-
return LiteralTextEscaper.createSimple(this, false)
32+
return createSimple(this, false)
3333
}
3434
}

0 commit comments

Comments
 (0)