Add implementation for a CSS Type Selector
Matches an Element with the given tag name or all Elements (universal selector) http://www.w3.org/TR/css3-selectors/#type-selectors
This commit is contained in:
@@ -85,6 +85,9 @@
|
||||
624AC90619FBFEA000BD3C4A /* html5lib-tests in Resources */ = {isa = PBXBuildFile; fileRef = 624AC90419FBFE8A00BD3C4A /* html5lib-tests */; };
|
||||
624AC90E19FC702E00BD3C4A /* HTML Standard.html in Resources */ = {isa = PBXBuildFile; fileRef = 624AC90D19FC702E00BD3C4A /* HTML Standard.html */; };
|
||||
624AC90F19FC702E00BD3C4A /* HTML Standard.html in Resources */ = {isa = PBXBuildFile; fileRef = 624AC90D19FC702E00BD3C4A /* HTML Standard.html */; };
|
||||
624B28B81B03DA820048D328 /* CSSTypeSelector.h in Headers */ = {isa = PBXBuildFile; fileRef = 624B28B61B03DA820048D328 /* CSSTypeSelector.h */; };
|
||||
624B28B91B03DA820048D328 /* CSSTypeSelector.m in Sources */ = {isa = PBXBuildFile; fileRef = 624B28B71B03DA820048D328 /* CSSTypeSelector.m */; };
|
||||
624B28BA1B03DA820048D328 /* CSSTypeSelector.m in Sources */ = {isa = PBXBuildFile; fileRef = 624B28B71B03DA820048D328 /* CSSTypeSelector.m */; };
|
||||
624B28BC1B03DAB70048D328 /* HTMLNodeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 624B28BB1B03DAB70048D328 /* HTMLNodeFilter.h */; };
|
||||
624B28C41B04190D0048D328 /* NSCharacterSet+HTMLKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 624B28C21B04190D0048D328 /* NSCharacterSet+HTMLKit.h */; };
|
||||
624B28C51B04190D0048D328 /* NSCharacterSet+HTMLKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 624B28C31B04190D0048D328 /* NSCharacterSet+HTMLKit.m */; };
|
||||
@@ -235,6 +238,8 @@
|
||||
624AC90019FBF9ED00BD3C4A /* HTMLKitTokenizerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLKitTokenizerTests.m; sourceTree = "<group>"; };
|
||||
624AC90419FBFE8A00BD3C4A /* html5lib-tests */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "html5lib-tests"; sourceTree = "<group>"; };
|
||||
624AC90D19FC702E00BD3C4A /* HTML Standard.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "HTML Standard.html"; sourceTree = "<group>"; };
|
||||
624B28B61B03DA820048D328 /* CSSTypeSelector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSTypeSelector.h; sourceTree = "<group>"; };
|
||||
624B28B71B03DA820048D328 /* CSSTypeSelector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSSTypeSelector.m; sourceTree = "<group>"; };
|
||||
624B28BB1B03DAB70048D328 /* HTMLNodeFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLNodeFilter.h; sourceTree = "<group>"; };
|
||||
624B28C21B04190D0048D328 /* NSCharacterSet+HTMLKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSCharacterSet+HTMLKit.h"; sourceTree = "<group>"; };
|
||||
624B28C31B04190D0048D328 /* NSCharacterSet+HTMLKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSCharacterSet+HTMLKit.m"; sourceTree = "<group>"; };
|
||||
@@ -333,6 +338,8 @@
|
||||
62491C451AFE51F100ACF9E2 /* CSSLexer.c */,
|
||||
62079BE71AF56F1E00D3B402 /* CSSSelector.h */,
|
||||
62079BE81AF56F1E00D3B402 /* CSSSelector.m */,
|
||||
624B28B61B03DA820048D328 /* CSSTypeSelector.h */,
|
||||
624B28B71B03DA820048D328 /* CSSTypeSelector.m */,
|
||||
);
|
||||
name = Selectors;
|
||||
sourceTree = "<group>";
|
||||
@@ -596,6 +603,7 @@
|
||||
6235CEA01AA5170A0026937B /* HTMLMarker.h in Headers */,
|
||||
62F31FDD19E9DCCF007F0657 /* HTMLTokenizerEntities.h in Headers */,
|
||||
623406E11ADB04F9004677A3 /* HTMLTemplate.h in Headers */,
|
||||
624B28B81B03DA820048D328 /* CSSTypeSelector.h in Headers */,
|
||||
6234BEEE1AABBF1400DEB15F /* HTMLStackOfOpenElements.h in Headers */,
|
||||
6238C9851AB8D6330006512E /* HTMLKitExceptions.h in Headers */,
|
||||
6238039F1AB63A8C008A53D0 /* HTMLEOFToken.h in Headers */,
|
||||
@@ -791,6 +799,7 @@
|
||||
624493A819CCC54100BCDDF4 /* HTMLTokenizer.m in Sources */,
|
||||
623F13AC1AFC11D900C90BF4 /* CSSTokenizer.m in Sources */,
|
||||
62491C481AFE51F100ACF9E2 /* CSSLexer.c in Sources */,
|
||||
624B28BA1B03DA820048D328 /* CSSTypeSelector.m in Sources */,
|
||||
625A14BE19C7829400AD0C32 /* HTMLKit.m in Sources */,
|
||||
623857981A9E8606003A45D9 /* HTMLDocumentType.m in Sources */,
|
||||
62079BEB1AF56F1E00D3B402 /* CSSSelector.m in Sources */,
|
||||
@@ -847,6 +856,7 @@
|
||||
624493A719CCC54100BCDDF4 /* HTMLTokenizer.m in Sources */,
|
||||
623F13AB1AFC11D900C90BF4 /* CSSTokenizer.m in Sources */,
|
||||
62491C471AFE51F100ACF9E2 /* CSSLexer.c in Sources */,
|
||||
624B28B91B03DA820048D328 /* CSSTypeSelector.m in Sources */,
|
||||
625A150219C783DE00AD0C32 /* HTMLKit.m in Sources */,
|
||||
623857971A9E8606003A45D9 /* HTMLDocumentType.m in Sources */,
|
||||
62079BEA1AF56F1E00D3B402 /* CSSSelector.m in Sources */,
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// CSSTypeSelector.h
|
||||
// HTMLKit
|
||||
//
|
||||
// Created by Iska on 13/05/15.
|
||||
// Copyright (c) 2015 BrainCookie. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "CSSSelector.h"
|
||||
|
||||
@interface CSSTypeSelector : CSSSelector
|
||||
|
||||
@property (nonatomic, copy) NSString *type;
|
||||
|
||||
+ (instancetype)universalSelector;
|
||||
- (instancetype)initWithType:(NSString *)type;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,45 @@
|
||||
//
|
||||
// CSSTypeSelector.m
|
||||
// HTMLKit
|
||||
//
|
||||
// Created by Iska on 13/05/15.
|
||||
// Copyright (c) 2015 BrainCookie. All rights reserved.
|
||||
//
|
||||
|
||||
#import "CSSTypeSelector.h"
|
||||
#import "HTMLElement.h"
|
||||
#import "NSString+HTMLKit.h"
|
||||
|
||||
@interface CSSTypeSelector ()
|
||||
{
|
||||
NSString *_type;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation CSSTypeSelector
|
||||
|
||||
+ (instancetype)universalSelector
|
||||
{
|
||||
return [[self alloc] initWithType:@"*"];
|
||||
}
|
||||
|
||||
- (instancetype)initWithType:(NSString *)type
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
self.type = [type copy];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (BOOL)matchesElement:(HTMLElement *)element
|
||||
{
|
||||
return [_type isEqualToString:@"*"] || [_type isEqualToStringIgnoringCase:element.tagName];
|
||||
}
|
||||
|
||||
- (NSString *)description
|
||||
{
|
||||
return [NSString stringWithFormat:@"<%@: %p '%@'>", self.class, self, self.type];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user