下面列出了com.intellij.psi.impl.source.tree.TreeUtil#findChildBackward ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
protected String convert(PsiElement element) {
if (isLookupFunction(element.getNode()) || isNonStarCount(element.getNode())) {
return element.getText().toLowerCase();
}
if (element.getNode().getElementType() == CypherTypes.FUNCTION_NAME
&& TreeUtil.findChildBackward(element.getNode(), CypherTypes.K_COUNT) == null) {
String text = element.getText();
if (text == null || text.isEmpty()) {
return null;
}
if (Strings.isUpperCase(text)) {
return text.toLowerCase();
}
char first = text.charAt(0);
return Character.toLowerCase(first) + (text.length() > 1 ? text.substring(1) : "");
}
return null;
}
@SuppressWarnings("unchecked")
private static void addRuleRefFoldingDescriptors(List<FoldingDescriptor> descriptors, PsiElement root) {
for (RuleSpecNode specNode : PsiTreeUtil.findChildrenOfType(root, RuleSpecNode.class)) {
GrammarElementRefNode refNode = PsiTreeUtil.findChildOfAnyType(specNode, GrammarElementRefNode.class);
if (refNode == null) continue;
PsiElement nextSibling = refNode.getNextSibling();
if (nextSibling == null) continue;
int startOffset = nextSibling.getTextOffset();
ASTNode backward = TreeUtil.findChildBackward(specNode.getNode(), SEMICOLON);
if (backward == null) continue;
int endOffset = backward.getTextRange().getEndOffset();
if (startOffset >= endOffset) continue;
descriptors.add(new FoldingDescriptor(specNode, new TextRange(startOffset, endOffset)));
}
}