]> source.dussan.org Git - gwtquery.git/commitdiff
Code review fixes
authorJean-Christophe Lariviere <jclariviere@arcbees.com>
Fri, 12 Dec 2014 16:01:00 +0000 (11:01 -0500)
committerJean-Christophe Lariviere <jclariviere@arcbees.com>
Fri, 12 Dec 2014 16:01:00 +0000 (11:01 -0500)
gwtquery-core/src/main/java/com/google/gwt/query/client/GQuery.java

index a589f3d5e44e5e9d93c471e1ac572697a664cacd..261991c2206f01968623b897989cfe76ebfba145 100644 (file)
@@ -3377,35 +3377,40 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Get the ancestors of each element in the current set of matched elements, up to but not
    * including the element matched by the selector.
    */
-  public GQuery parentsUntil(String selector) {
-    JsNodeArray result = JsNodeArray.create();
-    for (Element e : elements) {
-      Node par = e.getParentNode();
-      while (par != null && par != document) {
-        if (selector != null && $(par).is(selector)) {
-          break;
-        }
-        result.addNode(par);
-        par = par.getParentNode();
+  public GQuery parentsUntil(final String selector) {
+    return parentsUntil(new Predicate(){
+      @Override
+      public boolean f(Element e, int index) {
+        return $(e).is(selector);
       }
-    }
-    return new GQuery(unique(result)).setPreviousObject(this);
+    });
   }
 
   /**
    * Get the ancestors of each element in the current set of matched elements, up to but not
-   * including the element matched by the selector.
+   * including the node.
    */
-  public GQuery parentsUntil(Node selector) {
+  public GQuery parentsUntil(final Node node) {
+    return parentsUntil(new Predicate() {
+      @Override
+      public boolean f(Element e, int index) {
+        return e == node;
+      }
+    });
+  }
+
+  private GQuery parentsUntil(Predicate predicate) {
     JsNodeArray result = JsNodeArray.create();
     for (Element e : elements) {
+      int i = 0;
       Node par = e.getParentNode();
       while (par != null && par != document) {
-        if (selector != null && par == selector) {
+        if (!predicate.f(par, i)) {
           break;
         }
         result.addNode(par);
         par = par.getParentNode();
+        i++;
       }
     }
     return new GQuery(unique(result)).setPreviousObject(this);