Remove braces from block string template entry: Simplify implementation

This commit is contained in:
Alexey Sedunov
2014-12-23 13:57:34 +03:00
parent 82579f489b
commit 7d31c562b3
2 changed files with 10 additions and 12 deletions
@@ -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))
}
@@ -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))
}
}