Skip to content

Commit 8610e79

Browse files
committed
Improve getter folding (fixes #90)
Small refactor to improve readability Thanks to mibac138 for pointing in to right direction
1 parent f681e25 commit 8610e79

1 file changed

Lines changed: 14 additions & 6 deletions

File tree

src/com/intellij/advancedExpressionFolding/AdvancedExpressionFoldingBuilder.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1761,18 +1761,15 @@ && startsWith(((PsiMethodCallExpression) argument).getMethodExpression().getRefe
17611761
}
17621762

17631763
}
1764-
if (settings.getState().isGetSetExpressionsCollapse()) {
1765-
if (identifier.isPresent() && ((startsWith(identifier.get().getText(), "get") && identifier.get().getText().length() > 3)
1766-
|| (identifier.get().getText().startsWith("is") && identifier.get().getText().length() > 2))
1767-
&& element.getArgumentList().getExpressions().length == 0) {
1764+
if (settings.getState().isGetSetExpressionsCollapse() && identifier.isPresent()) {
1765+
if (isGetter(identifier.get(), element)) {
17681766
return new Getter(element, element.getTextRange(), TextRange.create(identifier.get().getTextRange().getStartOffset(),
17691767
element.getTextRange().getEndOffset()),
17701768
qualifier != null
17711769
? getAnyExpression(qualifier, document)
17721770
: null,
17731771
guessPropertyName(identifier.get().getText()));
1774-
} else if (identifier.isPresent()
1775-
&& identifier.get().getText().startsWith("set")
1772+
} else if (identifier.get().getText().startsWith("set")
17761773
&& identifier.get().getText().length() > 3
17771774
&& Character.isUpperCase(identifier.get().getText().charAt(3))
17781775
&& element.getArgumentList().getExpressions().length == 1
@@ -1790,6 +1787,17 @@ && startsWith(((PsiMethodCallExpression) argument).getMethodExpression().getRefe
17901787
return null;
17911788
}
17921789

1790+
private static boolean isGetter(@NotNull PsiElement element, @NotNull PsiMethodCallExpression expression) {
1791+
return expression.getArgumentList().getExpressions().length == 0
1792+
&& (isGetterAux(element.getText(), "get") || isGetterAux(element.getText(), "is"));
1793+
}
1794+
1795+
private static boolean isGetterAux(@Nullable String name, @NotNull String prefix) {
1796+
return startsWith(name, prefix)
1797+
&& name.length() > prefix.length()
1798+
&& Character.isUpperCase(name.charAt(prefix.length()));
1799+
}
1800+
17931801
static int findDot(@NotNull Document document, int position, int i) {
17941802
int offset = 0;
17951803
while (Math.abs(offset) < 100 && position > 0 && position < document.getText().length() && !document.getText(TextRange.create(position, position + 1)).equals(".")) {

0 commit comments

Comments
 (0)