diff --git a/HTMLKit.xcodeproj/project.pbxproj b/HTMLKit.xcodeproj/project.pbxproj
index dbd4fed..0bc6af0 100644
--- a/HTMLKit.xcodeproj/project.pbxproj
+++ b/HTMLKit.xcodeproj/project.pbxproj
@@ -16,6 +16,7 @@
6234BEEE1AABBF1400DEB15F /* HTMLStackOfOpenElements.h in Headers */ = {isa = PBXBuildFile; fileRef = 6234BEEC1AABBF1400DEB15F /* HTMLStackOfOpenElements.h */; };
6234BEEF1AABBF1400DEB15F /* HTMLStackOfOpenElements.m in Sources */ = {isa = PBXBuildFile; fileRef = 6234BEED1AABBF1400DEB15F /* HTMLStackOfOpenElements.m */; };
6234BEF01AABBF1400DEB15F /* HTMLStackOfOpenElements.m in Sources */ = {isa = PBXBuildFile; fileRef = 6234BEED1AABBF1400DEB15F /* HTMLStackOfOpenElements.m */; };
+ 6234CF571ABF892400B6077D /* libHTMLKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 625A14DE19C7834000AD0C32 /* libHTMLKit.a */; };
6235CE9B1AA509430026937B /* NSString+HTMLKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 6235CE991AA509430026937B /* NSString+HTMLKit.h */; };
6235CE9C1AA509430026937B /* NSString+HTMLKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 6235CE9A1AA509430026937B /* NSString+HTMLKit.m */; };
6235CE9D1AA509430026937B /* NSString+HTMLKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 6235CE9A1AA509430026937B /* NSString+HTMLKit.m */; };
@@ -28,6 +29,8 @@
62363C3D1ABE428200DAB4C6 /* HTMLListOfActiveFormattingElements.h in Headers */ = {isa = PBXBuildFile; fileRef = 62363C3B1ABE428200DAB4C6 /* HTMLListOfActiveFormattingElements.h */; };
62363C3E1ABE428200DAB4C6 /* HTMLListOfActiveFormattingElements.m in Sources */ = {isa = PBXBuildFile; fileRef = 62363C3C1ABE428200DAB4C6 /* HTMLListOfActiveFormattingElements.m */; };
62363C3F1ABE428200DAB4C6 /* HTMLListOfActiveFormattingElements.m in Sources */ = {isa = PBXBuildFile; fileRef = 62363C3C1ABE428200DAB4C6 /* HTMLListOfActiveFormattingElements.m */; };
+ 6236738E1AC0CE2500FF89B3 /* HTMLKitTokenizerPerformance.m in Sources */ = {isa = PBXBuildFile; fileRef = 6236738D1AC0CE2500FF89B3 /* HTMLKitTokenizerPerformance.m */; };
+ 6236738F1AC0CE2500FF89B3 /* HTMLKitTokenizerPerformance.m in Sources */ = {isa = PBXBuildFile; fileRef = 6236738D1AC0CE2500FF89B3 /* HTMLKitTokenizerPerformance.m */; };
6238039F1AB63A8C008A53D0 /* HTMLEOFToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 6238039D1AB63A8C008A53D0 /* HTMLEOFToken.h */; };
623803A01AB63A8C008A53D0 /* HTMLEOFToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 6238039E1AB63A8C008A53D0 /* HTMLEOFToken.m */; };
623803A11AB63A8C008A53D0 /* HTMLEOFToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 6238039E1AB63A8C008A53D0 /* HTMLEOFToken.m */; };
@@ -50,8 +53,8 @@
624493AD19CD0CBE00BCDDF4 /* HTMLToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 624493AB19CD0CBE00BCDDF4 /* HTMLToken.m */; };
624493AE19CD0CBE00BCDDF4 /* HTMLToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 624493AB19CD0CBE00BCDDF4 /* HTMLToken.m */; };
624AC8FF19FBF59800BD3C4A /* HTMLTokens.h in Headers */ = {isa = PBXBuildFile; fileRef = 624AC8FE19FBF4F700BD3C4A /* HTMLTokens.h */; };
- 624AC90119FBF9ED00BD3C4A /* HTMLTokenizerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 624AC90019FBF9ED00BD3C4A /* HTMLTokenizerTests.m */; };
- 624AC90219FBF9ED00BD3C4A /* HTMLTokenizerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 624AC90019FBF9ED00BD3C4A /* HTMLTokenizerTests.m */; };
+ 624AC90119FBF9ED00BD3C4A /* HTMLKitTokenizerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 624AC90019FBF9ED00BD3C4A /* HTMLKitTokenizerTests.m */; };
+ 624AC90219FBF9ED00BD3C4A /* HTMLKitTokenizerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 624AC90019FBF9ED00BD3C4A /* HTMLKitTokenizerTests.m */; };
624AC90519FBFE9A00BD3C4A /* html5lib-tests in Resources */ = {isa = PBXBuildFile; fileRef = 624AC90419FBFE8A00BD3C4A /* html5lib-tests */; };
624AC90619FBFEA000BD3C4A /* html5lib-tests in Resources */ = {isa = PBXBuildFile; fileRef = 624AC90419FBFE8A00BD3C4A /* html5lib-tests */; };
624AC90E19FC702E00BD3C4A /* HTML Standard.html in Resources */ = {isa = PBXBuildFile; fileRef = 624AC90D19FC702E00BD3C4A /* HTML Standard.html */; };
@@ -63,15 +66,12 @@
625A14C619C7829400AD0C32 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 625A14AF19C7829400AD0C32 /* Cocoa.framework */; };
625A14C919C7829400AD0C32 /* HTMLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 625A14AC19C7829400AD0C32 /* HTMLKit.framework */; };
625A14CF19C7829400AD0C32 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 625A14CD19C7829400AD0C32 /* InfoPlist.strings */; };
- 625A14D119C7829400AD0C32 /* HTMLKitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 625A14D019C7829400AD0C32 /* HTMLKitTests.m */; };
625A14E019C7834100AD0C32 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 625A14DF19C7834100AD0C32 /* Foundation.framework */; };
625A14ED19C7834100AD0C32 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 625A14C419C7829400AD0C32 /* XCTest.framework */; };
625A14EE19C7834100AD0C32 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 625A14DF19C7834100AD0C32 /* Foundation.framework */; };
- 625A14F319C7834100AD0C32 /* libHTMLKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 625A14DE19C7834000AD0C32 /* libHTMLKit.a */; };
625A150219C783DE00AD0C32 /* HTMLKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 625A14BD19C7829400AD0C32 /* HTMLKit.m */; };
625A150319C783E200AD0C32 /* HTMLKit.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 625A14BC19C7829400AD0C32 /* HTMLKit.h */; };
625A150419C783EB00AD0C32 /* HTMLKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 625A14BC19C7829400AD0C32 /* HTMLKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 625A150519C783FD00AD0C32 /* HTMLKitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 625A14D019C7829400AD0C32 /* HTMLKitTests.m */; };
625A150819C78ABA00AD0C32 /* HTMLInputStreamReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 625A150619C78ABA00AD0C32 /* HTMLInputStreamReader.h */; };
625A150919C78ABA00AD0C32 /* HTMLInputStreamReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 625A150719C78ABA00AD0C32 /* HTMLInputStreamReader.m */; };
625A150A19C78ABA00AD0C32 /* HTMLInputStreamReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 625A150719C78ABA00AD0C32 /* HTMLInputStreamReader.m */; };
@@ -93,8 +93,8 @@
62AE594919F9948A0043F069 /* HTMLCharacterToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 62AE594719F9948A0043F069 /* HTMLCharacterToken.h */; };
62AE594A19F9948A0043F069 /* HTMLCharacterToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 62AE594819F9948A0043F069 /* HTMLCharacterToken.m */; };
62AE594B19F9948A0043F069 /* HTMLCharacterToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 62AE594819F9948A0043F069 /* HTMLCharacterToken.m */; };
- 62D8345919FB1AC4009205A9 /* HTML5LibTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 62D8345819FB1AC4009205A9 /* HTML5LibTest.m */; };
- 62D8345A19FB1AC4009205A9 /* HTML5LibTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 62D8345819FB1AC4009205A9 /* HTML5LibTest.m */; };
+ 62D8345919FB1AC4009205A9 /* HTML5LibTokenizerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 62D8345819FB1AC4009205A9 /* HTML5LibTokenizerTest.m */; };
+ 62D8345A19FB1AC4009205A9 /* HTML5LibTokenizerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 62D8345819FB1AC4009205A9 /* HTML5LibTokenizerTest.m */; };
62F31FDD19E9DCCF007F0657 /* HTMLTokenizerEntities.h in Headers */ = {isa = PBXBuildFile; fileRef = 62F31FDB19E9DCCF007F0657 /* HTMLTokenizerEntities.h */; };
62F31FDE19E9DCCF007F0657 /* HTMLTokenizerEntities.m in Sources */ = {isa = PBXBuildFile; fileRef = 62F31FDC19E9DCCF007F0657 /* HTMLTokenizerEntities.m */; };
62F31FDF19E9DCCF007F0657 /* HTMLTokenizerEntities.m in Sources */ = {isa = PBXBuildFile; fileRef = 62F31FDC19E9DCCF007F0657 /* HTMLTokenizerEntities.m */; };
@@ -151,6 +151,7 @@
62362A3F1A9FDE8A00301989 /* HTMLNodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLNodes.h; sourceTree = ""; };
62363C3B1ABE428200DAB4C6 /* HTMLListOfActiveFormattingElements.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLListOfActiveFormattingElements.h; sourceTree = ""; };
62363C3C1ABE428200DAB4C6 /* HTMLListOfActiveFormattingElements.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLListOfActiveFormattingElements.m; sourceTree = ""; };
+ 6236738D1AC0CE2500FF89B3 /* HTMLKitTokenizerPerformance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLKitTokenizerPerformance.m; sourceTree = ""; };
623719431AA12EE8002E03C8 /* HTMLQuirksMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLQuirksMode.h; sourceTree = ""; };
6238039D1AB63A8C008A53D0 /* HTMLEOFToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLEOFToken.h; sourceTree = ""; };
6238039E1AB63A8C008A53D0 /* HTMLEOFToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLEOFToken.m; sourceTree = ""; };
@@ -168,8 +169,7 @@
624493AA19CD0CBE00BCDDF4 /* HTMLToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLToken.h; sourceTree = ""; };
624493AB19CD0CBE00BCDDF4 /* HTMLToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLToken.m; sourceTree = ""; };
624AC8FE19FBF4F700BD3C4A /* HTMLTokens.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLTokens.h; sourceTree = ""; };
- 624AC90019FBF9ED00BD3C4A /* HTMLTokenizerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLTokenizerTests.m; sourceTree = ""; };
- 624AC90319FBFD1A00BD3C4A /* HTMLKitTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLKitTests.h; sourceTree = ""; };
+ 624AC90019FBF9ED00BD3C4A /* HTMLKitTokenizerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLKitTokenizerTests.m; sourceTree = ""; };
624AC90419FBFE8A00BD3C4A /* html5lib-tests */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "html5lib-tests"; sourceTree = ""; };
624AC90D19FC702E00BD3C4A /* HTML Standard.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "HTML Standard.html"; sourceTree = ""; };
625A14AC19C7829400AD0C32 /* HTMLKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HTMLKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -186,7 +186,6 @@
625A14C419C7829400AD0C32 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
625A14CC19C7829400AD0C32 /* HTMLKitTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "HTMLKitTests-Info.plist"; sourceTree = ""; };
625A14CE19C7829400AD0C32 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
- 625A14D019C7829400AD0C32 /* HTMLKitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTMLKitTests.m; sourceTree = ""; };
625A14DE19C7834000AD0C32 /* libHTMLKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libHTMLKit.a; sourceTree = BUILT_PRODUCTS_DIR; };
625A14DF19C7834100AD0C32 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
625A14EC19C7834100AD0C32 /* HTMLKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HTMLKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -206,8 +205,8 @@
62AE594319F992F30043F069 /* HTMLCommentToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLCommentToken.m; sourceTree = ""; };
62AE594719F9948A0043F069 /* HTMLCharacterToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLCharacterToken.h; sourceTree = ""; };
62AE594819F9948A0043F069 /* HTMLCharacterToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLCharacterToken.m; sourceTree = ""; };
- 62D8345719FB1AC4009205A9 /* HTML5LibTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTML5LibTest.h; sourceTree = ""; };
- 62D8345819FB1AC4009205A9 /* HTML5LibTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTML5LibTest.m; sourceTree = ""; };
+ 62D8345719FB1AC4009205A9 /* HTML5LibTokenizerTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTML5LibTokenizerTest.h; sourceTree = ""; };
+ 62D8345819FB1AC4009205A9 /* HTML5LibTokenizerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTML5LibTokenizerTest.m; sourceTree = ""; };
62E7CAAE19CDFFB500465A83 /* HTMLTokenizerCharacters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLTokenizerCharacters.h; sourceTree = ""; };
62F31FDB19E9DCCF007F0657 /* HTMLTokenizerEntities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLTokenizerEntities.h; sourceTree = ""; };
62F31FDC19E9DCCF007F0657 /* HTMLTokenizerEntities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLTokenizerEntities.m; sourceTree = ""; };
@@ -228,9 +227,9 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 625A14C919C7829400AD0C32 /* HTMLKit.framework in Frameworks */,
625A14C619C7829400AD0C32 /* Cocoa.framework in Frameworks */,
625A14C519C7829400AD0C32 /* XCTest.framework in Frameworks */,
- 625A14C919C7829400AD0C32 /* HTMLKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -246,15 +245,26 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 625A14ED19C7834100AD0C32 /* XCTest.framework in Frameworks */,
+ 6234CF571ABF892400B6077D /* libHTMLKit.a in Frameworks */,
625A14EE19C7834100AD0C32 /* Foundation.framework in Frameworks */,
- 625A14F319C7834100AD0C32 /* libHTMLKit.a in Frameworks */,
+ 625A14ED19C7834100AD0C32 /* XCTest.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 6236738C1AC0CD2400FF89B3 /* Tokenizer */ = {
+ isa = PBXGroup;
+ children = (
+ 62D8345719FB1AC4009205A9 /* HTML5LibTokenizerTest.h */,
+ 62D8345819FB1AC4009205A9 /* HTML5LibTokenizerTest.m */,
+ 624AC90019FBF9ED00BD3C4A /* HTMLKitTokenizerTests.m */,
+ 6236738D1AC0CE2500FF89B3 /* HTMLKitTokenizerPerformance.m */,
+ );
+ name = Tokenizer;
+ sourceTree = "";
+ };
623719441AA1472B002E03C8 /* Nodes */ = {
isa = PBXGroup;
children = (
@@ -362,11 +372,7 @@
625A14CA19C7829400AD0C32 /* Tests */ = {
isa = PBXGroup;
children = (
- 62D8345719FB1AC4009205A9 /* HTML5LibTest.h */,
- 62D8345819FB1AC4009205A9 /* HTML5LibTest.m */,
- 624AC90319FBFD1A00BD3C4A /* HTMLKitTests.h */,
- 625A14D019C7829400AD0C32 /* HTMLKitTests.m */,
- 624AC90019FBF9ED00BD3C4A /* HTMLTokenizerTests.m */,
+ 6236738C1AC0CD2400FF89B3 /* Tokenizer */,
625A14CB19C7829400AD0C32 /* Supporting Files */,
);
name = Tests;
@@ -626,9 +632,9 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 624AC90219FBF9ED00BD3C4A /* HTMLTokenizerTests.m in Sources */,
- 62D8345A19FB1AC4009205A9 /* HTML5LibTest.m in Sources */,
- 625A14D119C7829400AD0C32 /* HTMLKitTests.m in Sources */,
+ 6236738F1AC0CE2500FF89B3 /* HTMLKitTokenizerPerformance.m in Sources */,
+ 624AC90219FBF9ED00BD3C4A /* HTMLKitTokenizerTests.m in Sources */,
+ 62D8345A19FB1AC4009205A9 /* HTML5LibTokenizerTest.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -667,9 +673,9 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 624AC90119FBF9ED00BD3C4A /* HTMLTokenizerTests.m in Sources */,
- 62D8345919FB1AC4009205A9 /* HTML5LibTest.m in Sources */,
- 625A150519C783FD00AD0C32 /* HTMLKitTests.m in Sources */,
+ 6236738E1AC0CE2500FF89B3 /* HTMLKitTokenizerPerformance.m in Sources */,
+ 624AC90119FBF9ED00BD3C4A /* HTMLKitTokenizerTests.m in Sources */,
+ 62D8345919FB1AC4009205A9 /* HTML5LibTokenizerTest.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -811,7 +817,7 @@
625A14D819C7829400AD0C32 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/HTMLKit.framework/Versions/A/HTMLKit";
+ BUNDLE_LOADER = "";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
@@ -833,7 +839,7 @@
625A14D919C7829400AD0C32 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/HTMLKit.framework/Versions/A/HTMLKit";
+ BUNDLE_LOADER = "";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
@@ -884,7 +890,7 @@
625A150019C7834100AD0C32 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/HTMLKit.framework/Versions/A/HTMLKit";
+ BUNDLE_LOADER = "";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
@@ -908,7 +914,7 @@
625A150119C7834100AD0C32 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/HTMLKit.framework/Versions/A/HTMLKit";
+ BUNDLE_LOADER = "";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
diff --git a/HTMLKit.xcodeproj/xcshareddata/xcbaselines/625A14C219C7829400AD0C32.xcbaseline/5AB53A08-CDD0-43FB-B47F-2EE38B3FE707.plist b/HTMLKit.xcodeproj/xcshareddata/xcbaselines/625A14C219C7829400AD0C32.xcbaseline/5AB53A08-CDD0-43FB-B47F-2EE38B3FE707.plist
index d33dc20..98a2c6e 100644
--- a/HTMLKit.xcodeproj/xcshareddata/xcbaselines/625A14C219C7829400AD0C32.xcbaseline/5AB53A08-CDD0-43FB-B47F-2EE38B3FE707.plist
+++ b/HTMLKit.xcodeproj/xcshareddata/xcbaselines/625A14C219C7829400AD0C32.xcbaseline/5AB53A08-CDD0-43FB-B47F-2EE38B3FE707.plist
@@ -4,6 +4,19 @@
classNames
+ HTMLKitTokenizerPerformance
+
+ testTokenizerPerformance
+
+ com.apple.XCTPerformanceMetric_WallClockTime
+
+ baselineAverage
+ 14.55
+ baselineIntegrationDisplayName
+ Local Baseline
+
+
+
HTMLTokenizerTests
testTokenizerPerformance
diff --git a/HTMLKitTests/HTML5LibTest.h b/HTMLKitTests/HTML5LibTokenizerTest.h
similarity index 62%
rename from HTMLKitTests/HTML5LibTest.h
rename to HTMLKitTests/HTML5LibTokenizerTest.h
index b8180bc..7e18af8 100644
--- a/HTMLKitTests/HTML5LibTest.h
+++ b/HTMLKitTests/HTML5LibTokenizerTest.h
@@ -8,13 +8,14 @@
#import
-@interface HTML5LibTest : NSObject
+@interface HTML5LibTokenizerTest : NSObject
-@property (nonatomic, strong) NSString *title;
-@property (nonatomic, strong) NSString *input;
+@property (nonatomic, copy) NSString *testFile;
+@property (nonatomic, copy) NSString *title;
+@property (nonatomic, copy) NSString *input;
@property (nonatomic, strong) NSArray *output;
@property (nonatomic, strong) NSArray *initialStates;
-@property (nonatomic, strong) NSString *lastStartTag;
+@property (nonatomic, copy) NSString *lastStartTag;
@property (nonatomic, assign) BOOL ignoreErrorOrder;
- (instancetype)initWithTestDictionary:(NSDictionary *)dictionary;
diff --git a/HTMLKitTests/HTML5LibTest.m b/HTMLKitTests/HTML5LibTokenizerTest.m
similarity index 92%
rename from HTMLKitTests/HTML5LibTest.m
rename to HTMLKitTests/HTML5LibTokenizerTest.m
index 93b7993..74fae15 100644
--- a/HTMLKitTests/HTML5LibTest.m
+++ b/HTMLKitTests/HTML5LibTokenizerTest.m
@@ -6,12 +6,11 @@
// Copyright (c) 2014 BrainCookie. All rights reserved.
//
-#import "HTML5LibTest.h"
+#import "HTML5LibTokenizerTest.h"
#import "HTMLTokenizerStates.h"
#import "HTMLTokens.h"
-@implementation HTML5LibTest
-
+@implementation HTML5LibTokenizerTest
- (instancetype)initWithTestDictionary:(NSDictionary *)dictionary
{
@@ -94,10 +93,10 @@
} else if ([type isEqualToString:@"Comment"]) {
return [[HTMLCommentToken alloc] initWithData:data];
} else if ([type isEqualToString:@"DOCTYPE"]) {
- data = [[NSNull null] isEqualTo:data] ? nil : data;
+ data = [[NSNull null] isEqual:data] ? nil : data;
HTMLDOCTYPEToken *token = [[HTMLDOCTYPEToken alloc] initWithName:data];
- token.publicIdentifier = [[NSNull null] isEqualTo:output[2]] ? nil : output[2];
- token.systemIdentifier = [[NSNull null] isEqualTo:output[3]] ? nil : output[3];
+ token.publicIdentifier = [[NSNull null] isEqual:output[2]] ? nil : output[2];
+ token.systemIdentifier = [[NSNull null] isEqual:output[3]] ? nil : output[3];
token.forceQuirks = ([output[4] boolValue] == NO);
return token;
} else if ([type isEqualToString:@"EndTag"]) {
@@ -145,4 +144,9 @@
return string;
}
+- (NSString *)description
+{
+ return self.title;
+}
+
@end
diff --git a/HTMLKitTests/HTMLKitTests.h b/HTMLKitTests/HTMLKitTests.h
deleted file mode 100644
index 11c586b..0000000
--- a/HTMLKitTests/HTMLKitTests.h
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-// HTMLKitTests.h
-// HTMLKit
-//
-// Created by Iska on 25/10/14.
-// Copyright (c) 2014 BrainCookie. All rights reserved.
-//
-
-#import
-#import "HTML5LibTest.h"
-
-@interface HTMLKitTests : XCTestCase
-
-- (NSArray *)loadTests:(NSString *)testsFile forComponent:(NSString *)component;
-
-@end
\ No newline at end of file
diff --git a/HTMLKitTests/HTMLKitTests.m b/HTMLKitTests/HTMLKitTests.m
deleted file mode 100644
index 63e47ea..0000000
--- a/HTMLKitTests/HTMLKitTests.m
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// HTMLKitTests.m
-// HTMLKitTests
-//
-// Created by Iska on 15/09/14.
-// Copyright (c) 2014 BrainCookie. All rights reserved.
-//
-
-#import "HTMLKitTests.h"
-
-static NSString * const HTML5LibTests = @"html5lib-tests";
-
-@implementation HTMLKitTests
-
-- (NSArray *)loadTests:(NSString *)testsFile forComponent:(NSString *)component
-{
- NSString *path = [[NSBundle bundleForClass:self.class] resourcePath];
- path = [path stringByAppendingPathComponent:HTML5LibTests];
- path = [path stringByAppendingPathComponent:component];
- path = [path stringByAppendingPathComponent:testsFile];
-
- NSString *json = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
- NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:[json dataUsingEncoding:NSUTF8StringEncoding]
- options:0
- error:nil];
- NSArray *jsonTests = [dictionary objectForKey:@"tests"];
-
- NSMutableArray *tests = [NSMutableArray array];
- for (NSDictionary *test in jsonTests) {
- [tests addObject:[[HTML5LibTest alloc] initWithTestDictionary:test]];
- }
- return tests;
-}
-
-@end
diff --git a/HTMLKitTests/HTMLKitTokenizerPerformance.m b/HTMLKitTests/HTMLKitTokenizerPerformance.m
new file mode 100644
index 0000000..9aa8cfa
--- /dev/null
+++ b/HTMLKitTests/HTMLKitTokenizerPerformance.m
@@ -0,0 +1,37 @@
+//
+// HTMLKitTokenizerPerformance.m
+// HTMLKit
+//
+// Created by Iska on 23/03/15.
+// Copyright (c) 2015 BrainCookie. All rights reserved.
+//
+
+#import
+#import "HTMLTokenizer.h"
+#import "HTMLTokenizerStates.h"
+#import "HTMLTokens.h"
+
+@interface HTMLKitTokenizerPerformance : XCTestCase
+
+@end
+
+@implementation HTMLKitTokenizerPerformance
+
+- (void)testTokenizerPerformance
+{
+ NSString *path = [[NSBundle bundleForClass:self.class] resourcePath];
+ path = [path stringByAppendingPathComponent:@"HTML Standard.html"];
+
+ NSString *string = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
+
+ [self measureBlock:^{
+ HTMLTokenizer *tokenizer = [[HTMLTokenizer alloc] initWithString:string];
+
+ id token = nil;
+ do {
+ token = [tokenizer nextObject];
+ } while (token != nil);
+ }];
+}
+
+@end
diff --git a/HTMLKitTests/HTMLKitTokenizerTests.m b/HTMLKitTests/HTMLKitTokenizerTests.m
new file mode 100644
index 0000000..acc769b
--- /dev/null
+++ b/HTMLKitTests/HTMLKitTokenizerTests.m
@@ -0,0 +1,145 @@
+//
+// HTMLTokenizerTests.m
+// HTMLKit
+//
+// Created by Iska on 25/10/14.
+// Copyright (c) 2014 BrainCookie. All rights reserved.
+//
+
+#import
+#import "HTML5LibTokenizerTest.h"
+
+#import "HTMLTokenizer.h"
+#import "HTMLTokenizerStates.h"
+#import "HTMLTokens.h"
+
+#import "HTMLParser.h"
+#import "HTMLDocument.h"
+
+static NSString * const HTML5LibTests = @"html5lib-tests";
+static NSString * const TOKENIZER = @"tokenizer";
+
+#pragma mark - Extensions
+
+@implementation HTMLParseErrorToken (Testing)
+
+- (BOOL)isEqual:(id)object
+{
+ return [object isKindOfClass:[HTMLParseErrorToken class]];
+}
+
+@end
+
+#pragma mark - HTML5Lib Test Suite
+
+@interface HTMLKitTokenizerTests : XCTestCase
+@property (nonatomic, strong) NSString *testFile;
+@property (nonatomic, strong) NSArray *testsList;
+@end
+
+@implementation HTMLKitTokenizerTests
+
++ (XCTestSuite *)defaultTestSuite
+{
+ XCTestSuite *suite = [[XCTestSuite alloc] initWithName:NSStringFromClass(self)];
+
+ NSDictionary *testsMap = [self loadHTML5LibTokenizerTests];
+ [testsMap enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
+ [self addTestCaseForTestFile:key withTests:obj toTestSuite:suite];
+ }];
+
+ return suite;
+}
+
++ (void)addTestCaseForTestFile:(NSString *)testFile withTests:(NSArray *)tests toTestSuite:(XCTestSuite *)suite
+{
+ NSArray *allInvocations = [self testInvocations];
+ for (NSInvocation *invocation in allInvocations) {
+ XCTestCase *testCase = [[self alloc] initWithInvocation:invocation
+ testFile:testFile
+ tests:tests];
+ [suite addTest:testCase];
+ }
+}
+
++ (NSDictionary *)loadHTML5LibTokenizerTests
+{
+ NSString *path = [[NSBundle bundleForClass:self.class] resourcePath];
+ path = [path stringByAppendingPathComponent:HTML5LibTests];
+ path = [path stringByAppendingPathComponent:TOKENIZER];
+
+ NSMutableDictionary *testsMap = [NSMutableDictionary dictionary];
+ NSArray *testFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
+
+ for (NSString *testFile in testFiles) {
+ if (![testFile.pathExtension isEqualToString:@"test"]) {
+ continue;
+ }
+
+ NSString *jsonPath = [path stringByAppendingPathComponent:testFile];
+ NSString *json = [NSString stringWithContentsOfFile:jsonPath encoding:NSUTF8StringEncoding error:nil];
+ NSData *data = [json dataUsingEncoding:NSUTF8StringEncoding];
+
+ NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data
+ options:0
+ error:nil];
+ NSArray *jsonTests = [dictionary objectForKey:@"tests"];
+ NSMutableArray *tests = [NSMutableArray array];
+
+ for (NSDictionary *test in jsonTests) {
+ HTML5LibTokenizerTest *html5libTest = [[HTML5LibTokenizerTest alloc] initWithTestDictionary:test];
+ html5libTest.testFile = testFile.stringByDeletingPathExtension;
+ [tests addObject:html5libTest];
+ }
+ [testsMap setObject:tests forKey:testFile];
+ }
+
+ return testsMap;
+}
+
+#pragma mark - Instance
+
+- (instancetype)initWithInvocation:(NSInvocation *)invocation
+ testFile:(NSString *)testFile
+ tests:(NSArray *)tests
+{
+ self = [super initWithInvocation:invocation];
+ if (self) {
+ _testFile = testFile;
+ _testsList = tests;
+ }
+ return self;
+}
+
+- (NSString *)name
+{
+ NSInvocation *invocation = [self invocation];
+ NSString *title = self.testFile.stringByDeletingPathExtension;
+ return [NSString stringWithFormat:@"-[%@ %@_%@]", self.class, NSStringFromSelector(invocation.selector), title];
+}
+
+- (NSString *)description
+{
+ return self.name;
+}
+
+#pragma mark - Tests
+
+- (void)testTokenizer
+{
+ for (HTML5LibTokenizerTest *test in self.testsList) {
+ HTMLTokenizer *tokenizer = [[HTMLTokenizer alloc] initWithString:test.input];
+ [tokenizer setValue:test.lastStartTag forKey:@"_lastStartTagName"];
+
+ for (NSNumber *state in test.initialStates) {
+
+ tokenizer.state = [state integerValue];
+
+ NSArray *expectedTokens = test.output;
+ NSArray *tokens = [tokenizer allObjects];
+ XCTAssertEqualObjects(tokens, expectedTokens, @"%@", test.title);
+ }
+ }
+}
+
+@end
diff --git a/HTMLKitTests/HTMLTokenizerTests.m b/HTMLKitTests/HTMLTokenizerTests.m
deleted file mode 100644
index c570363..0000000
--- a/HTMLKitTests/HTMLTokenizerTests.m
+++ /dev/null
@@ -1,153 +0,0 @@
-//
-// HTMLTokenizerTests.m
-// HTMLKit
-//
-// Created by Iska on 25/10/14.
-// Copyright (c) 2014 BrainCookie. All rights reserved.
-//
-
-#import
-#import
-#import "HTMLKitTests.h"
-#import "HTML5LibTest.h"
-
-#import "HTMLTokenizer.h"
-#import "HTMLTokenizerStates.h"
-#import "HTMLTokens.h"
-
-static NSString * const TOKENIZER = @"tokenizer";
-
-@implementation HTMLParseErrorToken (Testing)
-
-- (BOOL)isEqual:(id)object
-{
- return [object isKindOfClass:[HTMLParseErrorToken class]];
-}
-
-@end
-
-@interface HTMLTokenizerTests : HTMLKitTests
-
-@end
-
-@implementation HTMLTokenizerTests
-
-- (void)setUp
-{
- [super setUp];
- // Put setup code here. This method is called before the invocation of each test method in the class.
-}
-
-- (void)tearDown
-{
- // Put teardown code here. This method is called after the invocation of each test method in the class.
- [super tearDown];
-}
-
-- (void)runTests:(NSString *)testsFile
-{
- NSArray *tests = [self loadTests:testsFile forComponent:TOKENIZER];
- for (HTML5LibTest *test in tests) {
-
- HTMLTokenizer *tokenizer = [[HTMLTokenizer alloc] initWithString:test.input];
- [tokenizer setValue:test.lastStartTag forKey:@"_lastStartTagName"];
-
- for (NSNumber *state in test.initialStates) {
-
- tokenizer.state = [state integerValue];
-
- NSArray *expectedTokens = test.output;
- NSArray *tokens = [tokenizer allObjects];
- XCTAssertEqualObjects(tokens, expectedTokens, @"%@", test.title);
- }
- }
-}
-
-- (void)test_contentModelFlags
-{
- [self runTests:@"contentModelFlags.test"];
-}
-
-- (void)test_domjs
-{
- [self runTests:@"domjs.test"];
-}
-
-- (void)test_entities
-{
- [self runTests:@"entities.test"];
-}
-
-- (void)test_escapeFlag
-{
- [self runTests:@"escapeFlag.test"];
-}
-
-- (void)test_namedEntities
-{
- [self runTests:@"namedEntities.test"];
-}
-
-- (void)test_numericEntities
-{
- [self runTests:@"numericEntities.test"];
-}
-
-- (void)test_pendingSpecChanges
-{
- [self runTests:@"pendingSpecChanges.test" ];
-}
-
-- (void)test_test1
-{
- [self runTests:@"test1.test" ];
-}
-
-- (void)test_test2
-{
- [self runTests:@"test2.test" ];
-}
-
-- (void)test_test3
-{
- [self runTests:@"test3.test" ];
-}
-
-- (void)test_test4
-{
- [self runTests:@"test4.test" ];
-}
-
-- (void)test_unicodeChars
-{
- [self runTests:@"unicodeChars.test" ];
-}
-
-- (void)test_unicodeCharsProblematic
-{
- [self runTests:@"unicodeCharsProblematic.test" ];
-}
-
-- (void)test_xmlViolation
-{
- [self runTests:@"xmlViolation.test" ];
-}
-
-- (void)testTokenizerPerformance
-{
- NSString *path = [[NSBundle bundleForClass:self.class] resourcePath];
- path = [path stringByAppendingPathComponent:@"HTML Standard.html"];
-
- NSString *string = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
-
- [self measureBlock:^{
- HTMLTokenizer *tokenizer = [[HTMLTokenizer alloc] initWithString:string];
-
- id token = nil;
- do {
- token = [tokenizer nextObject];
- } while (token != nil);
- }];
-}
-
-@end