diff --git a/HTMLKit/CSSNthExpressionParser.h b/HTMLKit/CSSNthExpressionParser.h index e00f8dc..2fd75af 100644 --- a/HTMLKit/CSSNthExpressionParser.h +++ b/HTMLKit/CSSNthExpressionParser.h @@ -8,25 +8,8 @@ #import -typedef struct CSSNthExpression -{ - NSInteger an; - NSInteger b; -} CSSNthExpression; - -NS_INLINE CSSNthExpression CSSNthExpressionMake(NSInteger an, NSInteger b) { - return (CSSNthExpression){ .an = an, .b = b }; -} - -const CSSNthExpression CSSNthExpressionOdd = (CSSNthExpression){ - .an = 2, .b = 1 -}; -const CSSNthExpression CSSNthExpressionEven = (CSSNthExpression){ - .an = 2, .b = 0 -}; - @interface CSSNthExpressionParser : NSObject -+ (CSSNthExpression)parseExpression:(NSString *)string; ++ (CSSNthExpression)parseExpression:(NSString *)expression; @end diff --git a/HTMLKit/CSSNthExpressionParser.m b/HTMLKit/CSSNthExpressionParser.m index 43a176c..a36915d 100644 --- a/HTMLKit/CSSNthExpressionParser.m +++ b/HTMLKit/CSSNthExpressionParser.m @@ -13,10 +13,12 @@ @implementation CSSNthExpressionParser -+ (CSSNthExpression)parseExpression:(NSString *)string ++ (CSSNthExpression)parseExpression:(NSString *)expression { NSCharacterSet *whitespace = [NSCharacterSet whitespaceAndNewlineCharacterSet]; + NSString *string = [expression copy]; + string = [string stringByTrimmingCharactersInSet:whitespace]; string = string.lowercaseString; diff --git a/HTMLKit/CSSSelector.h b/HTMLKit/CSSSelector.h index b16f2a9..d13fb58 100644 --- a/HTMLKit/CSSSelector.h +++ b/HTMLKit/CSSSelector.h @@ -8,6 +8,38 @@ #import +#pragma mark - Attribute Selector Type + +typedef NS_ENUM(NSUInteger, CSSAttributeSelectorType) +{ + CSSAttributeSelectorExists, + CSSAttributeSelectorExactMatch, + CSSAttributeSelectorIncludes, + CSSAttributeSelectorBegins, + CSSAttributeSelectorEnds, + CSSAttributeSelectorContains, + CSSAttributeSelectorHyphen, + CSSAttributeSelectorNot +}; + +#pragma mark - CSS Nth-Expression + +typedef struct CSSNthExpression +{ + NSInteger an; + NSInteger b; +} CSSNthExpression; + +NS_INLINE CSSNthExpression CSSNthExpressionMake(NSInteger an, NSInteger b) { + return (CSSNthExpression){ .an = an, .b = b }; +} + +extern const CSSNthExpression CSSNthExpressionOdd; +extern const CSSNthExpression CSSNthExpressionEven; +extern NSString * _Nonnull NSStringFromNthExpression(CSSNthExpression expression); + +#pragma mark - Base Selector Class + @class HTMLElement; @interface CSSSelector : NSObject