Merge branch 'master' of git.labs.intellij.net:idea/community
authorIlya.Kazakevich <Ilya.Kazakevich@jetbrains.com>
Fri, 4 Mar 2016 16:45:47 +0000 (19:45 +0300)
committerIlya.Kazakevich <Ilya.Kazakevich@jetbrains.com>
Fri, 4 Mar 2016 16:45:47 +0000 (19:45 +0300)
python/src/com/jetbrains/python/psi/PsiQuery.java

index a6acda999ae7382c154b1a29b5392b72d90b99de..56862acb26fa91fc0c9f934c3b37da928524e34a 100644 (file)
@@ -24,6 +24,7 @@ import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 // TODO: Propogate typization to all class like in PsiTypedQuery
 
@@ -77,17 +78,18 @@ public class PsiQuery {
     return new PsiQuery(result.toArray(new PsiElement[result.size()]));
   }
 
-  
+
   /**
    * Searches for string literals with specific text
-   * @param clazz string literal class
+   * @param clazz        string literal class
    * @param expectedText expected text
    * @return query {@link com.jetbrains.python.psi.PsiQuery}
    */
   @NotNull
-  public final PsiQuery childrenStringLiterals(@NotNull final Class<? extends PyStringLiteralExpression> clazz, @NotNull final String expectedText) {
+  public final PsiQuery childrenStringLiterals(@NotNull final Class<? extends PyStringLiteralExpression> clazz,
+                                               @NotNull final String expectedText) {
     final List<PsiElement> result = new ArrayList<PsiElement>();
-    for ( final PyStringLiteralExpression element : getChildrenElements(clazz)) {
+    for (final PyStringLiteralExpression element : getChildrenElements(clazz)) {
       if (element.getStringValue().equals(expectedText)) {
         result.add(element);
       }
@@ -153,6 +155,19 @@ public class PsiQuery {
     return new PsiQuery(result);
   }
 
+  /**
+   * Get qualifiers of all elements if elements do have any
+   */
+  @NotNull
+  public PsiQuery qualifiers() {
+    return new PsiQuery(Arrays.stream(myPsiElements)
+                          .filter(o -> o instanceof PyQualifiedExpression)
+                          .map(o -> ((PyQualifiedExpression)o).getQualifier())
+                          .filter(o -> o != null)
+                          .collect(Collectors.toList())
+    );
+  }
+
 
   /**
    * Filter parents by condition