Add Node Iterator initializers with filter and show-options arguments

This commit is contained in:
iska
2015-05-28 23:26:08 +02:00
parent e1c3533a1c
commit 3df5a219e1
5 changed files with 29 additions and 4 deletions
+2 -1
View File
@@ -101,7 +101,8 @@ typedef NS_ENUM(short, HTMLNodeType)
- (void)enumerateChildElementsUsingBlock:(void (^)(HTMLElement *element, NSUInteger idx, BOOL *stop))block;
- (HTMLNodeIterator *)nodeIterator;
- (HTMLNodeIterator *)nodeIteratorWithFilter:(id<HTMLNodeFilter>)filter
showOptions:(HTMLNodeFilterShowOptions)showOptions;
- (NSString *)treeDescription;
@end
+6 -1
View File
@@ -277,9 +277,14 @@
- (HTMLNodeIterator *)nodeIterator
{
return [[HTMLNodeIterator alloc] initWithNode:self];
return [self nodeIteratorWithFilter:nil showOptions:HTMLNodeFilterShowAll];
}
- (HTMLNodeIterator *)nodeIteratorWithFilter:(id<HTMLNodeFilter>)filter
showOptions:(HTMLNodeFilterShowOptions)showOptions
{
return [[HTMLNodeIterator alloc] initWithNode:self filter:filter showOptions:showOptions];
}
#ifndef HTMLKIT_NO_DOM_CHECKS
-1
View File
@@ -20,7 +20,6 @@ typedef NS_ENUM(unsigned long, HTMLNodeFilterShowOptions)
HTMLNodeFilterShowAll = 0xFFFFFFFF,
HTMLNodeFilterShowElement = 0x1,
HTMLNodeFilterShowText = 0x4,
HTMLNodeFilterShowProcessingInstruction = 0x40,
HTMLNodeFilterShowComment = 0x80,
HTMLNodeFilterShowDocument = 0x100,
HTMLNodeFilterShowDocumentType = 0x200,
+6
View File
@@ -20,6 +20,12 @@
@property (nonatomic, strong, readonly) id<HTMLNodeFilter> filter;
- (instancetype)initWithNode:(HTMLNode *)node;
- (instancetype)initWithNode:(HTMLNode *)node
filter:(id<HTMLNodeFilter>)filter;
- (instancetype)initWithNode:(HTMLNode *)node
filter:(id<HTMLNodeFilter>)filter
showOptions:(HTMLNodeFilterShowOptions)showOptions;
- (HTMLNode *)nextNode;
- (HTMLNode *)previousNode;
+15 -1
View File
@@ -24,13 +24,27 @@ typedef NS_ENUM(short, TraverseDirection)
@implementation HTMLNodeIterator
- (instancetype)initWithNode:(HTMLNode *)node
{
return [self initWithNode:node filter:nil];
}
- (instancetype)initWithNode:(HTMLNode *)node
filter:(id<HTMLNodeFilter>)filter
{
return [self initWithNode:node filter:nil showOptions:HTMLNodeFilterShowAll];
}
- (instancetype)initWithNode:(HTMLNode *)node
filter:(id<HTMLNodeFilter>)filter
showOptions:(HTMLNodeFilterShowOptions)showOptions
{
self = [super init];
if (self) {
_root = node;
_filter = filter;
_whatToShow = showOptions;
_referenceNode = _root;
_pointerBeforeReferenceNode = YES;
_whatToShow = HTMLNodeFilterShowAll;
}
return self;
}