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 change.function.signature.action=Change function signature
remove.unnecessary.parentheses=Remove unnecessary parentheses remove.unnecessary.parentheses=Remove unnecessary parentheses
remove.unnecessary.parentheses.family=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.family=Add Name to Argument
add.name.to.argument.single=Add name to argument\: ''{0}'' add.name.to.argument.single=Add name to argument\: ''{0}''
add.name.to.argument.multiple=Add name to argument... 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 org.jetbrains.kotlin.psi.JetPsiFactory
import java.util.regex.* import java.util.regex.*
import org.jetbrains.kotlin.psi.JetStringTemplateEntryWithExpression import org.jetbrains.kotlin.psi.JetStringTemplateEntryWithExpression
import org.jetbrains.kotlin.psi.psiUtil.replaced
public class RemoveCurlyBracesFromTemplateIntention : JetSelfTargetingOffsetIndependentIntention<JetBlockStringTemplateEntry>( public class RemoveCurlyBracesFromTemplateIntention : JetSelfTargetingOffsetIndependentIntention<JetBlockStringTemplateEntry>(javaClass(), "Remove curly braces from variable") {
"remove.unnecessary.curly.brackets.from.string.template", javaClass()) {
companion object {
val INSTANCE = RemoveCurlyBracesFromTemplateIntention()
val pattern = Pattern.compile("[a-zA-Z0-9_].*")
}
override fun isApplicableTo(element: JetBlockStringTemplateEntry): Boolean { override fun isApplicableTo(element: JetBlockStringTemplateEntry): Boolean {
if (element.getExpression() !is JetSimpleNameExpression) return false
val nextSiblingText = element.getNextSibling()?.getText() val nextSiblingText = element.getNextSibling()?.getText()
if (nextSiblingText != null && pattern.matcher(nextSiblingText).matches()) return false return nextSiblingText == null || !pattern.matcher(nextSiblingText).matches()
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
} }
override fun applyTo(element: JetBlockStringTemplateEntry, editor: Editor) { 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; PsiElement parent = result != null ? result.getParent() : null;
if (parent instanceof JetBlockStringTemplateEntry) { if (parent instanceof JetBlockStringTemplateEntry) {
JetStringTemplateEntryWithExpression newEntry = RemoveCurlyBracesFromTemplateIntention intention = new RemoveCurlyBracesFromTemplateIntention();
RemoveCurlyBracesFromTemplateIntention.INSTANCE.convertIfApplicable((JetBlockStringTemplateEntry) parent); JetBlockStringTemplateEntry entry = (JetBlockStringTemplateEntry) parent;
JetStringTemplateEntryWithExpression newEntry = intention.isApplicableTo(entry) ? intention.applyTo(entry) : entry;
result = newEntry.getExpression(); result = newEntry.getExpression();
} }