diff --git a/HTMLKit/HTMLInputStreamReader.m b/HTMLKit/HTMLInputStreamReader.m index b2fcb88..2e5b393 100644 --- a/HTMLKit/HTMLInputStreamReader.m +++ b/HTMLKit/HTMLInputStreamReader.m @@ -8,6 +8,7 @@ #import "HTMLInputStreamReader.h" #import "HTMLTokenizerCharacters.h" +#import "NSCharacterSet+HTMLKit.h" #pragma mark - HTMLInputStreamReader @@ -145,7 +146,7 @@ - (BOOL)consumeHexNumber:(unsigned long long *)result { - NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"0123456789ABCDEFabcdef"]; + NSCharacterSet *set = [NSCharacterSet HTMLHexNumberCharacterSet]; NSString *string = nil; BOOL success = [_scanner scanCharactersFromSet:set intoString:&string]; diff --git a/HTMLKit/NSCharacterSet+HTMLKit.h b/HTMLKit/NSCharacterSet+HTMLKit.h index d987429..513da2d 100644 --- a/HTMLKit/NSCharacterSet+HTMLKit.h +++ b/HTMLKit/NSCharacterSet+HTMLKit.h @@ -11,5 +11,6 @@ @interface NSCharacterSet (HTMLKit) + (instancetype)HTMLWhitespaceCharacterSet; ++ (instancetype)HTMLHexNumberCharacterSet; @end diff --git a/HTMLKit/NSCharacterSet+HTMLKit.m b/HTMLKit/NSCharacterSet+HTMLKit.m index 78d4fb7..d33e2af 100644 --- a/HTMLKit/NSCharacterSet+HTMLKit.m +++ b/HTMLKit/NSCharacterSet+HTMLKit.m @@ -12,7 +12,22 @@ + (instancetype)HTMLWhitespaceCharacterSet { - return [NSCharacterSet characterSetWithCharactersInString:@" \t\n\r\f"]; + static NSCharacterSet *set = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + set = [NSCharacterSet characterSetWithCharactersInString:@" \t\n\r\f"]; + }); + return set; +} + ++ (instancetype)HTMLHexNumberCharacterSet +{ + static NSCharacterSet *set = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + set = [NSCharacterSet characterSetWithCharactersInString:@"0123456789ABCDEFabcdef"]; + }); + return set; } @end