8000 optimize Twig "extends" tag indexing performance · SylApps/idea-php-symfony2-plugin@c129b93 · GitHub
[go: up one dir, main page]

Skip to content

Commit c129b93

Browse files
committed
optimize Twig "extends" tag indexing performance
1 parent a397522 commit c129b93

File tree

1 file changed

+23
-21
lines changed

1 file changed

+23
-21
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/indexes/TwigBlockIndexExtension.java

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -54,29 +54,31 @@ public DataIndexer<String, Set<String>, FileContent> getIndexer() {
5454
}
5555
}
5656

57-
for(TwigExtendsTag extendsTag : PsiTreeUtil.getChildrenOfTypeAsList(psiFile, TwigExtendsTag.class)) {
58-
for (String templateName : TwigUtil.getTwigExtendsTagTemplates(extendsTag)) {
59-
blocks.putIfAbsent("extends", new HashSet<>());
60-
blocks.get("extends").add(TwigUtil.normalizeTemplateName(templateName));
61-
}
62-
}
63-
64-
for(TwigCompositeElement twigCompositeElement: PsiTreeUtil.getChildrenOfTypeAsList(psiFile, TwigCompositeElement.class)) {
65-
if(twigCompositeElement.getNode().getElementType() == TwigElementTypes.TAG) {
66-
twigCompositeElement.acceptChildren(new PsiRecursiveElementWalkingVisitor() {
67-
@Override
68-
public void visitElement(PsiElement element) {
69-
if(TwigPattern.getTwigTagUseNamePattern().accepts(element) && PsiElementUtils.getParentOfType(element, TwigElementTypes.EMBED_STATEMENT) == null) {
70-
String templateName = TwigUtil.normalizeTemplateName(PsiElementUtils.trimQuote(element.getText()));
71-
if(StringUtils.isNotBlank(templateName)) {
72-
blocks.putIfAbsent("use", new HashSet<>());
73-
blocks.get("use").add(templateName);
57+
for(PsiElement psiElement : PsiTreeUtil.getChildrenOfAnyType(psiFile, TwigExtendsTag.class, TwigCompositeElement.class)) {
58+
if (psiElement instanceof TwigExtendsTag) {
59+
// {% extends 'foo.html.twig' %}
60+
for (String templateName : TwigUtil.getTwigExtendsTagTemplates((TwigExtendsTag) psiElement)) {
61+
blocks.putIfAbsent("extends", new HashSet<>());
62+
blocks.get("extends").add(TwigUtil.normalizeTemplateName(templateName));
63+
}
64+
} else if(psiElement instanceof TwigCompositeElement) {
65+
// {% use 'foo.html.twig' %}
66+
if(psiElement.getNode().getElementType() == TwigElementTypes.TAG) {
67+
psiElement.acceptChildren(new PsiRecursiveElementWalkingVisitor() {
68+
@Override
69+
public void visitElement(PsiElement element) {
70+
if(TwigPattern.getTwigTagUseNamePattern().accepts(element) && PsiElementUtils.getParentOfType(element, TwigElementTypes.EMBED_STATEMENT) == null) {
71+
String templateName = TwigUtil.normalizeTemplateName(PsiElementUtils.trimQuote(element.getText()));
72+
if(StringUtils.isNotBlank(templateName)) {
73+
blocks.putIfAbsent("use", new HashSet<>());
74+
blocks.get("use").add(templateName);
75+
}
7476
}
75-
}
7677

77-
super.visitElement(element);
78-
}
79-
});
78+
super.visitElement(element);
79+
}
80+
});
81+
}
8082
}
8183
}
8284
}

0 commit comments

Comments
 (0)
0