下面列出了com.intellij.psi.util.PsiTreeUtil#skipWhitespacesBackward ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static boolean isDefinitionInFor(@NotNull LattePhpVariable element) {
LatteNetteAttrValue parentAttr = PsiTreeUtil.getParentOfType(element, LatteNetteAttrValue.class);
if (parentAttr != null) {
PsiElement nextElement = PsiTreeUtil.skipWhitespacesForward(element);
if (nextElement == null || nextElement.getNode().getElementType() != LatteTypes.T_PHP_DEFINITION_OPERATOR) {
return false;
}
PsiElement prevElement = PsiTreeUtil.skipWhitespacesBackward(parentAttr);
if (prevElement == null || prevElement.getNode().getElementType() != LatteTypes.T_PHP_DEFINITION_OPERATOR) {
return false;
}
prevElement = PsiTreeUtil.skipWhitespacesBackward(prevElement);
return prevElement != null && prevElement.getText().equals("n:for");
}
return LatteUtil.matchParentMacroName(element, "for") && LattePhpVariableUtil.isNextDefinitionOperator(element);
}
@Nullable
private static LattePhpType findPrevPhpType(LattePhpVariable element) {
LattePhpTypedPartElement typedElement = PsiTreeUtil.getParentOfType(element, LattePhpTypedPartElement.class);
if (typedElement != null) {
return typedElement.getPhpType();
}
LattePhpStatementPartElement statementPart = element.getPhpStatementPart();
if (statementPart == null) {
return null;
}
PsiElement phpTypeElement = PsiTreeUtil.skipWhitespacesBackward(statementPart.getPhpStatement());
return phpTypeElement instanceof LattePhpTypeElement
? ((LattePhpTypeElement) phpTypeElement).getPhpType()
: (phpTypeElement instanceof LattePhpStatement ? ((LattePhpStatement) phpTypeElement).getPhpType() : null);
}
public static boolean isDefinitionInForeach(@NotNull PsiElement element) {
PsiElement parent = element.getParent();
if (parent != null && parent.getNode().getElementType() == PHP_FOREACH) {
PsiElement prevElement = PsiTreeUtil.skipWhitespacesBackward(element);
IElementType type = prevElement != null ? prevElement.getNode().getElementType() : null;
return type == T_PHP_AS || type == T_PHP_DOUBLE_ARROW;
} else if (parent != null && parent.getNode().getElementType() == PHP_ARRAY_OF_VARIABLES) {
return isDefinitionInForeach(parent);
}
return false;
}
public static boolean isStatic(@NotNull PsiElement element) {
PsiElement prev = PsiTreeUtil.skipWhitespacesBackward(element);
return prev != null && prev.getNode().getElementType() == T_PHP_DOUBLE_COLON;
}
public static boolean isFunction(@NotNull PsiElement element) {
PsiElement prev = PsiTreeUtil.skipWhitespacesBackward(element);
return prev == null || (prev.getNode().getElementType() != T_PHP_DOUBLE_COLON && prev.getNode().getElementType() != T_PHP_OBJECT_OPERATOR);
}