diff --git a/HTMLKit/HTMLDocumentType.m b/HTMLKit/HTMLDocumentType.m
index e6d890b..e63fd16 100644
--- a/HTMLKit/HTMLDocumentType.m
+++ b/HTMLKit/HTMLDocumentType.m
@@ -7,6 +7,7 @@
//
#import "HTMLDocumentType.h"
+#import "NSString+HTMLKit.h"
NS_INLINE BOOL nilOrEqual(id first, id second) {
return (first == nil) || ([first isEqual:second]);
@@ -86,13 +87,13 @@ NS_INLINE BOOL nilOrEqual(id first, id second) {
return HTMLQuirksModeQuirks;
}
- if (isEqualCaseInsensitive(_publicIdentifier, @"-//W3O//DTD W3 HTML Strict 3.0//EN//") ||
- isEqualCaseInsensitive(_publicIdentifier, @"-/W3C/DTD HTML 4.0 Transitional/EN") ||
- isEqualCaseInsensitive(_publicIdentifier, @"HTML")) {
+ if ([_publicIdentifier isEqualToStringIgnoringCase:@"-//W3O//DTD W3 HTML Strict 3.0//EN//"] ||
+ [_publicIdentifier isEqualToStringIgnoringCase:@"-/W3C/DTD HTML 4.0 Transitional/EN"] ||
+ [_publicIdentifier isEqualToStringIgnoringCase:@"HTML"]) {
return HTMLQuirksModeQuirks;
}
- if (isEqualCaseInsensitive(_systemIdentifier, @"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd")) {
+ if ([_publicIdentifier isEqualToStringIgnoringCase:@"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"]) {
return HTMLQuirksModeQuirks;
}
@@ -101,21 +102,21 @@ NS_INLINE BOOL nilOrEqual(id first, id second) {
}
if (_systemIdentifier == nil) {
- if (hasPrefixCaseInsensitive(_publicIdentifier, @"-//W3C//DTD HTML 4.01 Frameset//") ||
- hasPrefixCaseInsensitive(_publicIdentifier, @"-//W3C//DTD HTML 4.01 Transitional//")) {
+ if ([_publicIdentifier hasPrefixIgnoringCase:@"-//W3C//DTD HTML 4.01 Frameset//"] ||
+ [_publicIdentifier hasPrefixIgnoringCase:@"-//W3C//DTD HTML 4.01 Transitional//"]) {
return HTMLQuirksModeQuirks;
}
}
#warning Check "iframe srcdoc"
- if (hasPrefixCaseInsensitive(_publicIdentifier, @"-//W3C//DTD XHTML 1.0 Frameset//") ||
- hasPrefixCaseInsensitive(_publicIdentifier, @"-//W3C//DTD XHTML 1.0 Transitional//")) {
+ if ([_publicIdentifier hasPrefixIgnoringCase:@"-//W3C//DTD XHTML 1.0 Frameset//"] ||
+ [_publicIdentifier hasPrefixIgnoringCase:@"-//W3C//DTD XHTML 1.0 Transitional//"]) {
return HTMLQuirksModeLimitedQuirks;
}
if (_systemIdentifier != nil) {
- if (hasPrefixCaseInsensitive(_publicIdentifier, @"-//W3C//DTD HTML 4.01 Frameset//") ||
- hasPrefixCaseInsensitive(_publicIdentifier, @"-//W3C//DTD HTML 4.01 Transitional//")) {
+ if ([_publicIdentifier hasPrefixIgnoringCase:@"-//W3C//DTD HTML 4.01 Frameset//"] ||
+ [_publicIdentifier hasPrefixIgnoringCase:@"-//W3C//DTD HTML 4.01 Transitional//"]) {
return HTMLQuirksModeLimitedQuirks;
}
}
diff --git a/HTMLKit/HTMLQuirksMode.h b/HTMLKit/HTMLQuirksMode.h
index e5caf19..3ad4920 100644
--- a/HTMLKit/HTMLQuirksMode.h
+++ b/HTMLKit/HTMLQuirksMode.h
@@ -6,6 +6,8 @@
// Copyright (c) 2015 BrainCookie. All rights reserved.
//
+#import "NSString+HTMLKit.h"
+
typedef NS_ENUM(short, HTMLQuirksMode)
{
HTMLQuirksModeNoQuirks,
@@ -76,20 +78,10 @@ static NSString * HTMLQuirksModePrefixes[] = {
#undef QUIRKS_ENTRY
};
-NS_INLINE BOOL isEqualCaseInsensitive(NSString *first, NSString *second) {
- return [first caseInsensitiveCompare:second] == NSOrderedSame;
-}
-
-NS_INLINE BOOL hasPrefixCaseInsensitive(NSString *string, NSString *prefix) {
- NSRange reange = [string rangeOfString:prefix
- options:NSAnchoredSearch|NSCaseInsensitiveSearch];
- return reange.location != NSNotFound;
-}
-
NS_INLINE BOOL QuirksModePrefixMatch(NSString *publicIdentifier)
{
for (int i = 0; i < sizeof(HTMLQuirksModePrefixes) / sizeof(HTMLQuirksModePrefixes[0]); i++) {
- if (hasPrefixCaseInsensitive(publicIdentifier, HTMLQuirksModePrefixes[i])) {
+ if ([publicIdentifier hasPrefixIgnoringCase:HTMLQuirksModePrefixes[i]]) {
return YES;
}
}
diff --git a/HTMLKit/NSString+HTMLKit.h b/HTMLKit/NSString+HTMLKit.h
index 146c89e..5f2e9fd 100644
--- a/HTMLKit/NSString+HTMLKit.h
+++ b/HTMLKit/NSString+HTMLKit.h
@@ -10,7 +10,9 @@
@interface NSString (HTMLKit)
+- (BOOL)isEqualToStringIgnoringCase:(NSString *)aString;
- (BOOL)isEqualToAny:(NSString *)first, ... NS_REQUIRES_NIL_TERMINATION;
+- (BOOL)hasPrefixIgnoringCase:(NSString *)aString;
- (BOOL)isHTMLWhitespaceString;
- (BOOL)containsHTMLWhitespace;
- (NSUInteger)leadingWhitespaceLength;
diff --git a/HTMLKit/NSString+HTMLKit.m b/HTMLKit/NSString+HTMLKit.m
index 114ffa2..fe4d8b7 100644
--- a/HTMLKit/NSString+HTMLKit.m
+++ b/HTMLKit/NSString+HTMLKit.m
@@ -15,6 +15,11 @@ NS_INLINE BOOL isHtmlWhitespaceChar(char c)
@implementation NSString (HTMLKit)
+- (BOOL)isEqualToStringIgnoringCase:(NSString *)aString
+{
+ return [self caseInsensitiveCompare:aString] == NSOrderedSame;
+}
+
- (BOOL)isEqualToAny:(NSString *)first, ... NS_REQUIRES_NIL_TERMINATION
{
va_list list;
@@ -28,6 +33,13 @@ NS_INLINE BOOL isHtmlWhitespaceChar(char c)
return NO;
}
+- (BOOL)hasPrefixIgnoringCase:(NSString *)aString
+{
+ NSRange reange = [self rangeOfString:aString
+ options:NSAnchoredSearch|NSCaseInsensitiveSearch];
+ return reange.location != NSNotFound;
+}
+
- (BOOL)isHTMLWhitespaceString
{
NSCharacterSet *set = [[NSCharacterSet characterSetWithCharactersInString:@" \t\n\f\r"] invertedSet];