From 7506ed8caeb1dbbdc0321feb4c77d38f46ccf980 Mon Sep 17 00:00:00 2001 From: iska Date: Fri, 30 Dec 2016 03:07:33 +0100 Subject: [PATCH] =?UTF-8?q?Refactor=20method=20to=20get=20a=20node?= =?UTF-8?q?=E2=80=99s=20ancestor=20chain=20into=20the=20utils=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/HTMLDOMUtils.h | 1 + Sources/HTMLDOMUtils.m | 9 +++++++++ Sources/HTMLNode.m | 12 +++--------- 3 files changed, 13 insertions(+), 9 deletions(-) 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 |