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