Skip to content

Commit c730dcd

Browse files
authored
Merge pull request #1748 from Haehnchen/feature/macro-tests
provide pattern tests for Twig macro syntax
2 parents a36b44e + ef1cb12 commit c730dcd

File tree

3 files changed

+49
-10
lines changed

3 files changed

+49
-10
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/TwigPattern.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1016,7 +1016,7 @@ public static ElementPattern<PsiElement> getTemplateImportFileReferenceTagPatter
10161016

10171017
//noinspection unchecked
10181018
return PlatformPatterns
1019-
.psiElement(TwigTokenTypes.IDENTIFIER)
1019+
.psiElement()
10201020
.withParent(PlatformPatterns.psiElement(TwigElementTypes.IMPORT_TAG))
10211021
.afterLeafSkipping(
10221022
PlatformPatterns.or(
@@ -1028,11 +1028,12 @@ public static ElementPattern<PsiElement> getTemplateImportFileReferenceTagPatter
10281028
),
10291029
PlatformPatterns.psiElement(TwigTokenTypes.IMPORT_KEYWORD)
10301030
).andNot(PlatformPatterns
1031-
.psiElement(TwigTokenTypes.IDENTIFIER)
1031+
.psiElement()
10321032
.afterLeafSkipping(
10331033
PlatformPatterns.or(
10341034
PlatformPatterns.psiElement(PsiWhiteSpace.class),
1035-
PlatformPatterns.psiElement(TwigTokenTypes.WHITE_SPACE)
1035+
PlatformPatterns.psiElement(TwigTokenTypes.WHITE_SPACE),
1036+
PlatformPatterns.psiElement(TwigTokenTypes.IDENTIFIER)
10361037
),
10371038
PlatformPatterns.psiElement(TwigTokenTypes.AS_KEYWORD)
10381039
)

src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/TwigTemplateCompletionContributor.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -122,32 +122,32 @@ public void addCompletions(@NotNull CompletionParameters parameters, ProcessingC
122122
CompletionType.BASIC,
123123
TwigPattern.getTemplateImportFileReferenceTagPattern(),
124124

125-
new CompletionProvider<CompletionParameters>() {
125+
new CompletionProvider<>() {
126126
public void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet resultSet) {
127127

128-
if(!Symfony2ProjectComponent.isEnabled(parameters.getPosition())) {
128+
if (!Symfony2ProjectComponent.isEnabled(parameters.getPosition())) {
129129
return;
130130
}
131131

132132
// find {% from "<template.name>"
133133
PsiElement psiElement = PsiElementUtils.getPrevSiblingOfType(parameters.getPosition(), TwigPattern.getFromTemplateElementPattern());
134-
if(psiElement == null) {
134+
if (psiElement == null) {
135135
return;
136136
}
137137

138138
// {% from _self
139-
if(psiElement.getNode().getElementType() == TwigTokenTypes.RESERVED_ID) {
139+
if (psiElement.getNode().getElementType() == TwigTokenTypes.RESERVED_ID) {
140140
attachLookupElements(resultSet, Collections.singletonList(psiElement.getContainingFile()));
141141
return;
142142
}
143143

144144
String templateName = psiElement.getText();
145-
if(StringUtils.isBlank(templateName)) {
145+
if (StringUtils.isBlank(templateName)) {
146146
return;
147147
}
148148

149149
Collection<PsiFile> twigFilesByName = TwigUtil.getTemplatePsiElements(parameters.getPosition().getProject(), templateName);
150-
if(twigFilesByName.size() == 0) {
150+
if (twigFilesByName.size() == 0) {
151151
return;
152152
}
153153

@@ -156,7 +156,7 @@ public void addCompletions(@NotNull CompletionParameters parameters, ProcessingC
156156

157157
private void attachLookupElements(@NotNull CompletionResultSet resultSet, Collection<PsiFile> psiFiles) {
158158
for (PsiFile psiFile : psiFiles) {
159-
for (TwigMacroTagInterface entry: TwigUtil.getMacros(psiFile)) {
159+
for (TwigMacroTagInterface entry : TwigUtil.getMacros(psiFile)) {
160160
resultSet.addElement(LookupElementBuilder.create(entry.getName()).withTypeText(entry.getParameters(), true).withIcon(TwigIcons.TwigFileIcon));
161161
}
162162
}

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/templating/TwigPatternTest.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,44 @@ public void testGetFunctionWithSecondParameterAsKeyLiteralPattern() {
269269
));
270270
}
271271

272+
/**
273+
* @see fr.adrienbrault.idea.symfony2plugin.templating.TwigPattern#getTemplateImportFileReferenceTagPattern
274+
*/
275+
public void testGetTemplateImportFileReferenceTagPattern() {
276+
assertTrue(fr.adrienbrault.idea.symfony2plugin.templating.TwigPattern.getTemplateImportFileReferenceTagPattern().accepts(
277+
findElementAt(TwigFileType.INSTANCE, "{% from 'foo.html.twig' import <caret> %}")
278+
));
279+
280+
assertTrue(fr.adrienbrault.idea.symfony2plugin.templating.TwigPattern.getTemplateImportFileReferenceTagPattern().accepts(
281+
findElementAt(TwigFileType.INSTANCE, "{% from 'foo.html.twig' import <caret> %}")
282+
));
283+
284+
assertTrue(fr.adrienbrault.idea.symfony2plugin.templating.TwigPattern.getTemplateImportFileReferenceTagPattern().accepts(
285+
findElementAt(TwigFileType.INSTANCE, "{% from 'foo.html.twig' import foo, <caret> %}")
286+
));
287+
288+
assertFalse(fr.adrienbrault.idea.symfony2plugin.templating.TwigPattern.getTemplateImportFileReferenceTagPattern().accepts(
289+
findElementAt(TwigFileType.INSTANCE, "{% from 'foo.html.twig' import foo as <caret> %}")
290+
));
291+
292+
assertFalse(fr.adrienbrault.idea.symfony2plugin.templating.TwigPattern.getTemplateImportFileReferenceTagPattern().accepts(
293+
findElementAt(TwigFileType.INSTANCE, "{% from 'foo.html.twig' import foo as a<caret> %}")
294+
));
295+
}
296+
297+
/**
298+
* @see fr.adrienbrault.idea.symfony2plugin.templating.TwigPattern#getFromTemplateElementPattern
299+
*/
300+
public void testGetFromTemplateElementPattern() {
301+
assertTrue(fr.adrienbrault.idea.symfony2plugin.templating.TwigPattern.getFromTemplateElementPattern().accepts(
302+
findElementAt(TwigFileType.INSTANCE, "{% from 'foo.ht<caret>ml.twig' import aa %}")
303+
));
304+
305+
assertTrue(fr.adrienbrault.idea.symfony2plugin.templating.TwigPattern.getFromTemplateElementPattern().accepts(
306+
findElementAt(TwigFileType.INSTANCE, "{% from _se<caret>lf import foo %}")
307+
));
308+
}
309+
272310
/**
273311
* @see fr.adrienbrault.idea.symfony2plugin.templating.TwigPattern#getPathAfterLeafPattern
274312
*/

0 commit comments

Comments
 (0)