use of org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.literals.GrStringImpl in project intellij-community by JetBrains.
the class ConvertStringToMultilineIntention method prepareNewLiteralText.
private static StringBuilder prepareNewLiteralText(List<GrLiteral> literals) {
String quote = !containsInjections(literals) && literals.get(0).getText().startsWith("'") ? "'''" : "\"\"\"";
final StringBuilder buffer = new StringBuilder();
buffer.append(quote);
for (GrLiteral literal : literals) {
if (literal instanceof GrLiteralImpl) {
appendSimpleStringValue(literal, buffer, quote);
} else {
final GrStringImpl gstring = (GrStringImpl) literal;
for (PsiElement child : gstring.getAllContentParts()) {
if (child instanceof GrStringContent) {
appendSimpleStringValue(child, buffer, "\"\"\"");
} else if (child instanceof GrStringInjection) {
buffer.append(child.getText());
}
}
}
}
buffer.append(quote);
return buffer;
}
use of org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.literals.GrStringImpl in project intellij-community by JetBrains.
the class ConvertMultilineStringToSingleLineIntention method processIntention.
@Override
protected void processIntention(@NotNull PsiElement element, @NotNull Project project, Editor editor) throws IncorrectOperationException {
String quote = element.getText().substring(0, 1);
StringBuilder buffer = new StringBuilder();
buffer.append(quote);
GrExpression old;
if (element instanceof GrLiteralImpl) {
appendSimpleStringValue(element, buffer, quote);
old = (GrExpression) element;
} else {
final GrStringImpl gstring = (GrStringImpl) element;
for (GroovyPsiElement child : gstring.getAllContentParts()) {
if (child instanceof GrStringContent) {
appendSimpleStringValue(child, buffer, "\"");
} else if (child instanceof GrStringInjection) {
buffer.append(child.getText());
}
}
old = gstring;
}
buffer.append(quote);
try {
final int offset = editor.getCaretModel().getOffset();
final TextRange range = old.getTextRange();
int shift;
if (range.getStartOffset() == offset) {
shift = 0;
} else if (range.getStartOffset() == offset - 1) {
shift = -1;
} else if (range.getEndOffset() == offset) {
shift = -4;
} else if (range.getEndOffset() == offset + 1) {
shift = -3;
} else {
shift = -2;
}
final GrExpression newLiteral = GroovyPsiElementFactory.getInstance(project).createExpressionFromText(buffer.toString());
old.replaceWithExpression(newLiteral, true);
if (shift != 0) {
editor.getCaretModel().moveToOffset(offset + shift);
}
} catch (IncorrectOperationException e) {
LOG.error(e);
}
}
Aggregations