Files
HTMLKit/HTMLKit/HTMLNodeFilter.h
T
iska 4592037aba Fix "return" attribute in source code documentation
@returns is ignored by jazzy
2016-01-18 21:48:00 +01:00

99 lines
2.3 KiB
Objective-C

//
// HTMLNodeFilter.h
// HTMLKit
//
// Created by Iska on 27/05/15.
// Copyright (c) 2015 BrainCookie. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
/**
The node filter's value when applied to a given HTML node. The node filter can either accept a node, skip it, or
reject it. Rejecting a node means skipping the node itself and all of it descendants.
*/
typedef NS_ENUM(unsigned short, HTMLNodeFilterValue)
{
HTMLNodeFilterAccept = 1,
HTMLNodeFilterReject = 2,
HTMLNodeFilterSkip = 3
};
/**
The show options for the HTML node iterator and tree walker.
@see HTMLNodeIterator
@see HTMLTreeWalker
*/
typedef NS_OPTIONS(unsigned long, HTMLNodeFilterShowOptions)
{
HTMLNodeFilterShowAll = 0xFFFFFFFF,
HTMLNodeFilterShowElement = 0x1,
HTMLNodeFilterShowText = 0x4,
HTMLNodeFilterShowComment = 0x80,
HTMLNodeFilterShowDocument = 0x100,
HTMLNodeFilterShowDocumentType = 0x200,
HTMLNodeFilterShowDocumentFragment = 0x400
};
#pragma mark - Node Filter
@class HTMLNode;
/**
A HTML Node Filter which can be used with a node iterator or a tree walker.
@see HTMLNodeIterator
@see HTMLTreeWalker
*/
@protocol HTMLNodeFilter <NSObject>
@required
/**
The implementation should return a HTMLNodeFilterValue to indicate accepting, skipping or rejecting a node.
@param node The node to be filtered.
@return `HTMLNodeFilterAccept` if accepted, `HTMLNodeFilterSkip` if skipped, or `HTMLNodeFilterReject` if rejected.
*/
- (HTMLNodeFilterValue)acceptNode:(HTMLNode *)node;
@end
#pragma mark - Block Filter
/**
A concrete block-based HTML Node Filter implementation.
*/
@interface HTMLNodeFilterBlock : NSObject <HTMLNodeFilter>
/**
Initializes and returns a new instance of this filter.
@param block The block to apply on each node to be filtered.
*/
+ (instancetype)filterWithBlock:(HTMLNodeFilterValue (^)(HTMLNode *node))block;
@end
#pragma mark - CSS Selector Filter
@class CSSSelector;
/**
A concrete css-selector-based HTML Node Filter implementation.
*/
@interface HTMLSelectorNodeFilter : NSObject <HTMLNodeFilter>
/**
Initializes and returns a new instance of this filter.
@param selector The selector to apply on each node to be filtered.
*/
+ (instancetype)filterWithSelector:(CSSSelector *)selector;
@end
NS_ASSUME_NONNULL_END