RemoveCurlyBracesFromTemplateIntention - minor refactoring
This commit is contained in:
@@ -287,8 +287,6 @@ change.function.signature.chooser.title=Choose signature
|
||||
change.function.signature.action=Change function signature
|
||||
remove.unnecessary.parentheses=Remove unnecessary parentheses
|
||||
remove.unnecessary.parentheses.family=Remove Unnecessary Parentheses
|
||||
remove.unnecessary.curly.brackets.from.string.template=Remove curly braces from variable
|
||||
remove.unnecessary.curly.brackets.from.string.template.family=Remove Curly Braces From Variable
|
||||
add.name.to.argument.family=Add Name to Argument
|
||||
add.name.to.argument.single=Add name to argument\: ''{0}''
|
||||
add.name.to.argument.multiple=Add name to argument...
|
||||
|
||||
+15
-19
@@ -22,30 +22,26 @@ import org.jetbrains.kotlin.psi.JetSimpleNameExpression
|
||||
import org.jetbrains.kotlin.psi.JetPsiFactory
|
||||
import java.util.regex.*
|
||||
import org.jetbrains.kotlin.psi.JetStringTemplateEntryWithExpression
|
||||
import org.jetbrains.kotlin.psi.psiUtil.replaced
|
||||
|
||||
public class RemoveCurlyBracesFromTemplateIntention : JetSelfTargetingOffsetIndependentIntention<JetBlockStringTemplateEntry>(
|
||||
"remove.unnecessary.curly.brackets.from.string.template", javaClass()) {
|
||||
|
||||
companion object {
|
||||
val INSTANCE = RemoveCurlyBracesFromTemplateIntention()
|
||||
val pattern = Pattern.compile("[a-zA-Z0-9_].*")
|
||||
}
|
||||
|
||||
public class RemoveCurlyBracesFromTemplateIntention : JetSelfTargetingOffsetIndependentIntention<JetBlockStringTemplateEntry>(javaClass(), "Remove curly braces from variable") {
|
||||
override fun isApplicableTo(element: JetBlockStringTemplateEntry): Boolean {
|
||||
if (element.getExpression() !is JetSimpleNameExpression) return false
|
||||
val nextSiblingText = element.getNextSibling()?.getText()
|
||||
if (nextSiblingText != null && pattern.matcher(nextSiblingText).matches()) return false
|
||||
return element.getExpression() is JetSimpleNameExpression
|
||||
}
|
||||
|
||||
fun convertIfApplicable(element: JetBlockStringTemplateEntry): JetStringTemplateEntryWithExpression {
|
||||
if (!isApplicableTo(element)) return element
|
||||
|
||||
val name = (element.getExpression() as JetSimpleNameExpression).getReferencedName()
|
||||
val newEntry = JetPsiFactory(element).createSimpleNameStringTemplateEntry(name)
|
||||
return element.replace(newEntry) as JetStringTemplateEntryWithExpression
|
||||
return nextSiblingText == null || !pattern.matcher(nextSiblingText).matches()
|
||||
}
|
||||
|
||||
override fun applyTo(element: JetBlockStringTemplateEntry, editor: Editor) {
|
||||
convertIfApplicable(element)
|
||||
applyTo(element)
|
||||
}
|
||||
|
||||
public fun applyTo(element: JetBlockStringTemplateEntry): JetStringTemplateEntryWithExpression {
|
||||
val name = (element.getExpression() as JetSimpleNameExpression).getReferencedName()
|
||||
val newEntry = JetPsiFactory(element).createSimpleNameStringTemplateEntry(name)
|
||||
return element.replaced(newEntry)
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val pattern = Pattern.compile("[a-zA-Z0-9_].*")
|
||||
}
|
||||
}
|
||||
|
||||
+3
-2
@@ -472,8 +472,9 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase {
|
||||
|
||||
PsiElement parent = result != null ? result.getParent() : null;
|
||||
if (parent instanceof JetBlockStringTemplateEntry) {
|
||||
JetStringTemplateEntryWithExpression newEntry =
|
||||
RemoveCurlyBracesFromTemplateIntention.INSTANCE.convertIfApplicable((JetBlockStringTemplateEntry) parent);
|
||||
RemoveCurlyBracesFromTemplateIntention intention = new RemoveCurlyBracesFromTemplateIntention();
|
||||
JetBlockStringTemplateEntry entry = (JetBlockStringTemplateEntry) parent;
|
||||
JetStringTemplateEntryWithExpression newEntry = intention.isApplicableTo(entry) ? intention.applyTo(entry) : entry;
|
||||
result = newEntry.getExpression();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user