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