package fr.adrienbrault.idea.symfony2plugin.templating.util;
import com.intellij.patterns.PlatformPatterns;
import com.intellij.patterns.PsiElementPattern;
import com.intellij.patterns.StandardPatterns;
import com.intellij.patterns.XmlPatterns;
import com.intellij.psi.PsiElement;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*/
public class TwigHtmlCompletionUtil {
// html inside twig: href=""
public static PsiElementPattern.Capture<PsiElement> getHrefAttributePattern() {
return PlatformPatterns.psiElement()
.withParent(
XmlPatterns.xmlAttributeValue()
.withParent(XmlPatterns.xmlAttribute("href")
)
).inFile(XmlPatterns.psiFile()
.withName(XmlPatterns
.string().endsWith(".twig")
)
);
}
public static PsiElementPattern.Capture<PsiElement> getFormActionAttributePattern() {
return PlatformPatterns.psiElement()
.withParent(
XmlPatterns.xmlAttributeValue()
.withParent(
XmlPatterns.xmlAttribute("action").withParent(
XmlPatterns.xmlTag().withName("form")
)
)
).inFile(XmlPatterns.psiFile()
.withName(XmlPatterns
.string().endsWith(".twig")
)
);
}
// html inside twig: <link href="#" rel="stylesheet" />
public static PsiElementPattern.Capture<PsiElement> getAssetCssAttributePattern() {
return PlatformPatterns.psiElement()
.withParent(
XmlPatterns.xmlAttributeValue()
.withParent(XmlPatterns
.xmlAttribute("href")
.withParent(XmlPatterns
.xmlTag()
.withChild(XmlPatterns
.xmlAttribute("rel")
.withValue(
StandardPatterns.string().equalTo("stylesheet")
)
)
)
)
).inFile(XmlPatterns.psiFile()
.withName(XmlPatterns
.string().endsWith(".twig")
)
);
}
// html inside twig: <script src="#"></script>
public static PsiElementPattern.Capture<PsiElement> getAssetJsAttributePattern() {
return PlatformPatterns.psiElement()
.withParent(
XmlPatterns.xmlAttributeValue()
.withParent(XmlPatterns
.xmlAttribute("src")
.withParent(XmlPatterns
.xmlTag().withName("script")
)
)
).inFile(XmlPatterns.psiFile()
.withName(XmlPatterns
.string().endsWith(".twig")
)
);
}
// html inside twig: <img src="">
public static PsiElementPattern.Capture<PsiElement> getAssetImageAttributePattern() {
return PlatformPatterns.psiElement()
.withParent(
XmlPatterns.xmlAttributeValue()
.withParent(XmlPatterns
.xmlAttribute("src")
.withParent(XmlPatterns
.xmlTag().withName("img")
)
)
).inFile(XmlPatterns.psiFile()
.withName(XmlPatterns
.string().endsWith(".twig")
)
);
}
}