Search in sources :

Example 1 with PyStatementSurrounder

use of com.jetbrains.python.refactoring.surround.surrounders.statements.PyStatementSurrounder 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;
        }
    };
}
Also used : PyStatementSurrounder(com.jetbrains.python.refactoring.surround.surrounders.statements.PyStatementSurrounder) Project(com.intellij.openapi.project.Project) PyIfStatement(com.jetbrains.python.psi.PyIfStatement) PyStatementList(com.jetbrains.python.psi.PyStatementList) Editor(com.intellij.openapi.editor.Editor) NotNull(org.jetbrains.annotations.NotNull) PsiElement(com.intellij.psi.PsiElement) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

Editor (com.intellij.openapi.editor.Editor)1 Project (com.intellij.openapi.project.Project)1 PsiElement (com.intellij.psi.PsiElement)1 PyIfStatement (com.jetbrains.python.psi.PyIfStatement)1 PyStatementList (com.jetbrains.python.psi.PyStatementList)1 PyStatementSurrounder (com.jetbrains.python.refactoring.surround.surrounders.statements.PyStatementSurrounder)1 NotNull (org.jetbrains.annotations.NotNull)1