if is None and if is not None postfix templates added

(cherry picked from commit f46145d)
This commit is contained in:
Liana Bakradze
2016-01-19 16:13:05 +03:00
committed by liana.bakradze
parent 3bfae3999a
commit 1362a6c6a4
28 changed files with 266 additions and 1 deletions

View File

@@ -0,0 +1,3 @@
def f(a):
if a is None:
<spot></spot>

View File

@@ -0,0 +1,2 @@
def f(a):
<spot>a</spot>.ifn

View File

@@ -0,0 +1,5 @@
<html>
<body>
Checks if the expression is None.
</body>
</html>

View File

@@ -0,0 +1,3 @@
def f(a):
if a is not None:
<spot></spot>

View File

@@ -0,0 +1,2 @@
def f(a):
<spot>a</spot>.ifnn

View File

@@ -0,0 +1,5 @@
<html>
<body>
Checks if the expression if not None.
</body>
</html>

View File

@@ -0,0 +1,63 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jetbrains.python.codeInsight.postfix;
import com.jetbrains.python.psi.*;
import org.jetbrains.annotations.Nullable;
public class PyBinaryConditionSurrounder extends PyExpressionAsConditionSurrounder {
private String myTextToGenerate;
private String myTemplateDescription;
public PyBinaryConditionSurrounder(String textToGenerate, String templateDescription) {
myTextToGenerate = textToGenerate;
myTemplateDescription = templateDescription;
}
@Override
protected String getTextToGenerate() {
return myTextToGenerate;
}
@Nullable
@Override
protected PyExpression getCondition(PyStatement statement) {
if (statement instanceof PyIfStatement) {
PyIfStatement ifStatement = (PyIfStatement)statement;
PyExpression condition = ifStatement.getIfPart().getCondition();
if (condition == null) {
return null;
}
return ((PyBinaryExpression)condition).getLeftExpression();
}
return null;
}
@Nullable
@Override
protected PyStatementListContainer getStatementListContainer(PyStatement statement) {
if (statement instanceof PyIfStatement) {
return ((PyIfStatement)statement).getIfPart();
}
return null;
}
@Override
public String getTemplateDescription() {
return myTemplateDescription;
}
}

View File

@@ -0,0 +1,35 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jetbrains.python.codeInsight.postfix;
import com.intellij.codeInsight.template.postfix.templates.SurroundPostfixTemplateBase;
import com.intellij.lang.surroundWith.Surrounder;
import org.jetbrains.annotations.NotNull;
public class PyIsNonePostfixTemplate extends SurroundPostfixTemplateBase {
public static final String TEMPLATE_DESCRIPTION = "if expr is None";
public PyIsNonePostfixTemplate() {
super("ifn", TEMPLATE_DESCRIPTION, PyPostfixUtils.PY_PSI_INFO, PyPostfixUtils.selectorTopmost());
}
@NotNull
@Override
protected Surrounder getSurrounder() {
return new PyBinaryConditionSurrounder("if expr is None:\n pass", TEMPLATE_DESCRIPTION);
}
}

View File

@@ -0,0 +1,35 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jetbrains.python.codeInsight.postfix;
import com.intellij.codeInsight.template.postfix.templates.SurroundPostfixTemplateBase;
import com.intellij.lang.surroundWith.Surrounder;
import org.jetbrains.annotations.NotNull;
public class PyIsNotNonePostfixTemplate extends SurroundPostfixTemplateBase {
public static final String TEMPLATE_DESCRIPTION = "if expr is not None";
public PyIsNotNonePostfixTemplate() {
super("ifnn", TEMPLATE_DESCRIPTION, PyPostfixUtils.PY_PSI_INFO, PyPostfixUtils.selectorTopmost());
}
@NotNull
@Override
protected Surrounder getSurrounder() {
return new PyBinaryConditionSurrounder("if a is not None: \n pass", TEMPLATE_DESCRIPTION);
}
}

View File

@@ -32,7 +32,9 @@ public class PyPostfixTemplateProvider implements PostfixTemplateProvider {
new PyParenthesizedExpressionPostfixTemplate(),
new PyReturnPostfixTemplate(),
new PyIfPostfixTemplate(),
new PyWhilePostfixTemplate());
new PyWhilePostfixTemplate(),
new PyIsNonePostfixTemplate(),
new PyIsNotNonePostfixTemplate());
}
@Override

View File

@@ -0,0 +1,2 @@
def f(a, b, c):
(a + b) * c.ifn<caret>

View File

@@ -0,0 +1,3 @@
def f(a, b, c):
if (a + b) * c is None:
<caret>

View File

@@ -0,0 +1,2 @@
def f(a):
a.ifn<caret>

View File

@@ -0,0 +1,3 @@
def f(a):
if a is None:
<caret>

View File

@@ -0,0 +1 @@
a = 1.ifn<caret>

View File

@@ -0,0 +1 @@
a = 1.ifn <caret>

View File

@@ -0,0 +1 @@
True.ifn<caret>

View File

@@ -0,0 +1,2 @@
if True is None:
<caret>

View File

@@ -0,0 +1,2 @@
def f(a, b, c):
(a + b) * c.ifnn<caret>

View File

@@ -0,0 +1,3 @@
def f(a, b, c):
if (a + b) * c is not None:
<caret>

View File

@@ -0,0 +1,2 @@
def f(a):
a.ifnn<caret>

View File

@@ -0,0 +1,3 @@
def f(a):
if a is not None:
<caret>

View File

@@ -0,0 +1 @@
a = 1.ifnn<caret>

View File

@@ -0,0 +1 @@
a = 1.ifnn <caret>

View File

@@ -0,0 +1 @@
True.ifnn<caret>

View File

@@ -0,0 +1,2 @@
if True is not None:
<caret>

View File

@@ -0,0 +1,40 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jetbrains.python.postfix;
public class PyIsNonePostfixTemplateTest extends PyPostfixTemplateTestCase {
public void testTopLevel() {
doTest();
}
public void testFunction() {
doTest();
}
public void testNonApplicable() {
doTest();
}
public void testComplexExpression() {
doTest();
}
@Override
protected String getTestDataDir() {
return "isNone/";
}
}

View File

@@ -0,0 +1,40 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jetbrains.python.postfix;
public class PyIsNotNonePostfixTemplateTest extends PyPostfixTemplateTestCase{
public void testTopLevel() {
doTest();
}
public void testFunction() {
doTest();
}
public void testNonApplicable() {
doTest();
}
public void testComplexExpression() {
doTest();
}
@Override
protected String getTestDataDir() {
return "isNotNone/";
}
}