RemoveCurlyBracesFromTemplateIntention - minor refactoring

This commit is contained in:
Valentin Kipyatkov
2015-04-28 16:34:31 +03:00
parent 9996afbde3
commit 6467b07245
3 changed files with 18 additions and 23 deletions
@@ -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...
@@ -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_].*")
}
}
@@ -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();
}