From 7d31c562b3661545944677e746d547ac366e3be8 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 23 Dec 2014 13:57:34 +0300 Subject: [PATCH] Remove braces from block string template entry: Simplify implementation --- .../org/jetbrains/jet/lang/psi/JetPsiFactory.kt | 5 +++++ .../RemoveCurlyBracesFromTemplateIntention.kt | 17 +++++------------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiFactory.kt b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiFactory.kt index cb866b31d8a..4e60bc31ca6 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiFactory.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiFactory.kt @@ -257,6 +257,11 @@ public class JetPsiFactory(private val project: Project) { return stringTemplateExpression.getEntries()[0] as JetStringTemplateEntryWithExpression } + public fun createSimpleNameStringTemplateEntry(name: String): JetStringTemplateEntryWithExpression { + val stringTemplateExpression = createExpression("\"\$$name\"") as JetStringTemplateExpression + return stringTemplateExpression.getEntries()[0] as JetStringTemplateEntryWithExpression + } + public fun createImportDirective(path: String): JetImportDirective { return createImportDirective(ImportPath(path)) } diff --git a/idea/src/org/jetbrains/jet/plugin/intentions/RemoveCurlyBracesFromTemplateIntention.kt b/idea/src/org/jetbrains/jet/plugin/intentions/RemoveCurlyBracesFromTemplateIntention.kt index 36419041073..700bd085983 100644 --- a/idea/src/org/jetbrains/jet/plugin/intentions/RemoveCurlyBracesFromTemplateIntention.kt +++ b/idea/src/org/jetbrains/jet/plugin/intentions/RemoveCurlyBracesFromTemplateIntention.kt @@ -32,20 +32,13 @@ public class RemoveCurlyBracesFromTemplateIntention : JetSelfTargetingIntention< override fun isApplicableTo(element: JetBlockStringTemplateEntry): Boolean { val nextSiblingText = element.getNextSibling()?.getText() if (nextSiblingText != null && pattern.matcher(nextSiblingText).matches()) return false - return element.getExpression()?.getOriginalElement() is JetSimpleNameExpression + return element.getExpression() is JetSimpleNameExpression } override fun applyTo(element: JetBlockStringTemplateEntry, editor: Editor) { - val parent = element.getParent() - if (parent == null) return - val sb = StringBuilder() - for (ch in parent.getChildren()) { - val newText = if (ch == element) "\$${element.getExpression()?.getText()}" else "${ch.getText()}" - sb.append(newText) - } - val tripleQuotes = parent.getFirstChild()?.getText()?.startsWith("\"\"\"") - if (tripleQuotes == null) return - val newExpression = if (tripleQuotes) "\"\"\"${sb.toString()}\"\"\"" else "\"${sb.toString()}\"" - parent.replace(JetPsiFactory(element).createExpression(newExpression)) + if (!isApplicableTo(element)) return + + val name = (element.getExpression() as JetSimpleNameExpression).getReferencedName() + element.replace(JetPsiFactory(element).createSimpleNameStringTemplateEntry(name)) } }