From 8cb088367d70b84cf673f394eef7537923867de0 Mon Sep 17 00:00:00 2001 From: iska Date: Fri, 27 Nov 2015 00:46:57 +0100 Subject: [PATCH] Add Node methods to handle child elements' indices --- HTMLKit/HTMLNode.h | 4 ++++ HTMLKit/HTMLNode.m | 28 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/HTMLKit/HTMLNode.h b/HTMLKit/HTMLNode.h index 9d753a5..6eaa8b3 100644 --- a/HTMLKit/HTMLNode.h +++ b/HTMLKit/HTMLNode.h @@ -84,6 +84,10 @@ typedef NS_ENUM(unsigned short, HTMLDocumentPosition) - (NSUInteger)indexOfChildNode:(HTMLNode *)node; +- (HTMLElement *)childElementAtIndex:(NSUInteger)index; + +- (NSUInteger)indexOfChildElement:(HTMLElement *)element; + - (HTMLNode *)prependNode:(HTMLNode *)node; - (void)prependNodes:(NSArray *)nodes; diff --git a/HTMLKit/HTMLNode.m b/HTMLKit/HTMLNode.m index bcfcfaa..74d3093 100644 --- a/HTMLKit/HTMLNode.m +++ b/HTMLKit/HTMLNode.m @@ -146,6 +146,34 @@ return [self.childNodes indexOfObject:node]; } +- (HTMLElement *)childElementAtIndex:(NSUInteger)index +{ + NSUInteger counter = 0; + for (HTMLNode *node in self.childNodes) { + if (node.nodeType == HTMLNodeElement) { + if (counter == index) { + return node.asElement; + } + counter++; + } + } + return nil; +} + +- (NSUInteger)indexOfChildElement:(HTMLElement *)element +{ + NSUInteger counter = 0; + for (HTMLNode *node in self.childNodes) { + if (node.nodeType == HTMLNodeElement) { + if (node == element) { + return counter; + } + counter++; + } + } + return NSNotFound; +} + - (HTMLNode *)prependNode:(HTMLNode *)node { return [self insertNode:node beforeChildNode:self.firstChild];