From 1e30e4d86ff64881dec4db7d7d86dbec74e5fabe Mon Sep 17 00:00:00 2001 From: iska Date: Sun, 29 Nov 2015 19:54:23 +0100 Subject: [PATCH] Add HTML Node's querySelector & querySelectorAll methods --- HTMLKit/HTMLNode.m | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/HTMLKit/HTMLNode.m b/HTMLKit/HTMLNode.m index c630665..345444a 100644 --- a/HTMLKit/HTMLNode.m +++ b/HTMLKit/HTMLNode.m @@ -442,8 +442,24 @@ #pragma mark - Selectors +- (HTMLElement *)querySelector:(NSString *)selectorString +{ + CSSSelector *selector = [CSSSelector selectorWithString:selectorString]; + return [self firstElementMatchingSelector:selector]; +} + +- (NSArray *)querySelectorAll:(NSString *)selectorString +{ + CSSSelector *selector = [CSSSelector selectorWithString:selectorString]; + return [self elementsMatchingSelector:selector]; +} + - (HTMLElement *)firstElementMatchingSelector:(CSSSelector *)selector { + if (selector == nil) { + return nil; + } + for (HTMLElement *element in [self nodeIteratorWithShowOptions:HTMLNodeFilterShowElement filter:nil]) { if ([selector acceptElement:element]) { return element; @@ -454,6 +470,10 @@ - (NSArray *)elementsMatchingSelector:(CSSSelector *)selector { + if (selector == nil) { + return @[]; + } + NSMutableArray *result = [NSMutableArray array]; for (HTMLElement *element in [self nodeIteratorWithShowOptions:HTMLNodeFilterShowElement filter:nil]) { if ([selector acceptElement:element]) {