diff --git a/Sources/HTMLDOMUtils.h b/Sources/HTMLDOMUtils.h index 2b62d59..b792197 100644 --- a/Sources/HTMLDOMUtils.h +++ b/Sources/HTMLDOMUtils.h @@ -12,3 +12,4 @@ @class HTMLNode; extern HTMLNode * GetCommonAncestorContainer(HTMLNode *nodeA, HTMLNode *nodeB); +extern NSArray * GetAncestorNodes(HTMLNode *node); diff --git a/Sources/HTMLDOMUtils.m b/Sources/HTMLDOMUtils.m index 45a95ef..efc2d82 100644 --- a/Sources/HTMLDOMUtils.m +++ b/Sources/HTMLDOMUtils.m @@ -21,3 +21,12 @@ extern HTMLNode * GetCommonAncestorContainer(HTMLNode *nodeA, HTMLNode *nodeB) return nil; } + +extern NSArray * GetAncestorNodes(HTMLNode *node) +{ + NSMutableArray *ancestors = [NSMutableArray array]; + for (HTMLNode *it = node; it; it = it.parentNode) { + [ancestors addObject:it]; + } + return ancestors; +} diff --git a/Sources/HTMLNode.m b/Sources/HTMLNode.m index c2aecba..9ba3bd3 100644 --- a/Sources/HTMLNode.m +++ b/Sources/HTMLNode.m @@ -17,6 +17,7 @@ #import "HTMLNodeFilter.h" #import "CSSSelector.h" #import "HTMLDocument+Private.h" +#import "HTMLDOMUtils.h" @interface HTMLNode () { @@ -343,16 +344,9 @@ return HTMLDocumentPositionEquivalent; } - NSArray * (^ ancestorNodes) (HTMLNode *) = ^ NSArray * (HTMLNode *node) { - NSMutableArray *ancestors = [NSMutableArray array]; - for (HTMLNode *node = self; node; node = node.parentNode) { - [ancestors addObject:node]; - } - return ancestors; - }; - NSArray *ancestors1 = ancestorNodes(self); - NSArray *ancestors2 = ancestorNodes(otherNode); + NSArray *ancestors1 = GetAncestorNodes(self); + NSArray *ancestors2 = GetAncestorNodes(otherNode); if (ancestors1.lastObject != ancestors2.lastObject) { return HTMLDocumentPositionDisconnected |