patterns in openapi
[fedora-idea.git] / dom / openapi / src / com / intellij / patterns / DomPatterns.java
blob7bca5eb6d695dc3c44ade5561f0853c2c304a89e
1 /*
2 * Copyright (c) 2000-2007 JetBrains s.r.o. All Rights Reserved.
3 */
4 package com.intellij.patterns;
6 import com.intellij.psi.xml.XmlAttribute;
7 import com.intellij.psi.xml.XmlElement;
8 import com.intellij.psi.xml.XmlTag;
9 import com.intellij.util.xml.DomElement;
10 import com.intellij.util.xml.DomManager;
11 import org.jetbrains.annotations.NotNull;
13 /**
14 * @author peter
16 public class DomPatterns {
18 public static <T extends DomElement> DomElementPattern.Capture<T> domElement(Class<T> aClass) {
19 return new DomElementPattern.Capture<T>(aClass);
22 public static DomElementPattern.Capture<DomElement> domElement() {
23 return domElement(DomElement.class);
26 public static GenericDomValuePattern<?> genericDomValue() {
27 return new GenericDomValuePattern();
30 public static <T> GenericDomValuePattern<T> genericDomValue(ElementPattern valuePattern) {
31 return ((GenericDomValuePattern)genericDomValue()).withValue(valuePattern);
34 public static <T> GenericDomValuePattern<T> genericDomValue(Class<T> aClass) {
35 return new GenericDomValuePattern<T>(aClass);
38 public static XmlElementPattern.Capture withDom(final ElementPattern pattern) {
39 return new XmlElementPattern.Capture().with(new PatternCondition<XmlElement>() {
40 public boolean accepts(@NotNull final XmlElement xmlElement, final MatchingContext matchingContext, @NotNull final TraverseContext traverseContext) {
41 final DomManager manager = DomManager.getDomManager(xmlElement.getProject());
42 if (xmlElement instanceof XmlAttribute) {
43 return pattern.accepts(manager.getDomElement((XmlAttribute)xmlElement), matchingContext, traverseContext);
45 if (xmlElement instanceof XmlTag) {
46 return pattern.accepts(manager.getDomElement((XmlTag)xmlElement), matchingContext, traverseContext);
48 return false;
50 });