use of com.jetbrains.python.psi.PyIfStatement in project intellij-community by JetBrains.
the class PyMainPostfixTemplate method getSurrounder.
@NotNull
@Override
protected Surrounder getSurrounder() {
return new PyStatementSurrounder() {
@Nullable
@Override
protected TextRange surroundStatement(@NotNull Project project, @NotNull Editor editor, @NotNull PsiElement[] elements) throws IncorrectOperationException {
PyIfStatement ifStatement = PyElementGenerator.getInstance(project).createFromText(LanguageLevel.forElement(elements[0]), PyIfStatement.class, "if __name__ == '__main__':\n expr");
ifStatement = (PyIfStatement) CodeStyleManager.getInstance(project).reformat(ifStatement);
final PsiElement parent = elements[0].getParent();
ifStatement = (PyIfStatement) parent.addBefore(ifStatement, elements[0]);
final PyStatementList statementList = ifStatement.getIfPart().getStatementList();
statementList.addRange(elements[0], elements[elements.length - 1]);
statementList.getFirstChild().delete();
parent.deleteChildRange(elements[0], elements[elements.length - 1]);
return TextRange.from(statementList.getTextRange().getEndOffset(), 0);
}
@Override
public String getTemplateDescription() {
return DESCR;
}
};
}
use of com.jetbrains.python.psi.PyIfStatement in project intellij-community by JetBrains.
the class PyWithIfElseSurrounder method surroundStatement.
@Override
@Nullable
protected TextRange surroundStatement(@NotNull Project project, @NotNull Editor editor, @NotNull PsiElement[] elements) throws IncorrectOperationException {
PyIfStatement ifStatement = PyElementGenerator.getInstance(project).createFromText(LanguageLevel.getDefault(), PyIfStatement.class, "if True:\n pass\nelse: pass\n");
final PsiElement parent = elements[0].getParent();
final PyStatementList statementList = ifStatement.getIfPart().getStatementList();
statementList.addRange(elements[0], elements[elements.length - 1]);
statementList.deleteChildRange(statementList.getFirstChild(), statementList.getFirstChild());
ifStatement = (PyIfStatement) parent.addBefore(ifStatement, elements[0]);
parent.deleteChildRange(elements[0], elements[elements.length - 1]);
ifStatement = CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement(ifStatement);
if (ifStatement == null) {
return null;
}
return ifStatement.getTextRange();
}
use of com.jetbrains.python.psi.PyIfStatement in project intellij-community by JetBrains.
the class PyElseUnwrapper method collectElementsToIgnore.
@Override
public void collectElementsToIgnore(PsiElement element, Set<PsiElement> result) {
PsiElement parent = element.getParent();
while (parent instanceof PyIfStatement) {
result.add(parent);
parent = parent.getParent();
}
}
use of com.jetbrains.python.psi.PyIfStatement in project intellij-community by JetBrains.
the class PyElseUnwrapperBase method doUnwrap.
@Override
protected void doUnwrap(PsiElement element, Context context) throws IncorrectOperationException {
PyElement elseBranch;
if (element instanceof PyIfStatement && ((PyIfStatement) element).getElsePart() != null) {
elseBranch = ((PyIfStatement) element).getElsePart();
} else {
elseBranch = (PyElement) element;
}
unwrapElseBranch(elseBranch, element.getParent(), context);
}
Aggregations