From c09adc2f96ec0b86b127bcda7089245149ca8f68 Mon Sep 17 00:00:00 2001 From: iska Date: Fri, 27 Nov 2015 01:10:07 +0100 Subject: [PATCH] Add Node properties for previous and next sibling elements --- HTMLKit/HTMLNode.h | 4 ++++ HTMLKit/HTMLNode.m | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/HTMLKit/HTMLNode.h b/HTMLKit/HTMLNode.h index 6eaa8b3..1549d30 100644 --- a/HTMLKit/HTMLNode.h +++ b/HTMLKit/HTMLNode.h @@ -62,6 +62,10 @@ typedef NS_ENUM(unsigned short, HTMLDocumentPosition) @property (nonatomic, strong, readonly) HTMLNode *nextSibling; +@property (nonatomic, strong, readonly) HTMLElement *previousSiblingElement; + +@property (nonatomic, strong, readonly) HTMLElement *nextSiblingElement; + @property (nonatomic, copy) NSString *textContent; @property (nonatomic, strong, readonly) NSString *outerHTML; diff --git a/HTMLKit/HTMLNode.m b/HTMLKit/HTMLNode.m index 74d3093..ebedf36 100644 --- a/HTMLKit/HTMLNode.m +++ b/HTMLKit/HTMLNode.m @@ -99,6 +99,24 @@ return [_parentNode childNodeAtIndex:index + 1]; } +- (HTMLElement *)previousSiblingElement +{ + HTMLNode *node = self.previousSibling; + while (node && node.nodeType != HTMLNodeElement) { + node = node.previousSibling; + } + return node.asElement; +} + +- (HTMLElement *)nextSiblingElement +{ + HTMLNode *node = self.previousSibling; + while (node && node.nodeType != HTMLNodeElement) { + node = node.nextSibling; + } + return node.asElement; +} + - (NSString *)textContent { return nil;