17 Commits

Author SHA1 Message Date
iska 70eeecbf67 Merge branch 'release/3.0.0' 2019-03-28 22:20:12 +01:00
iska 918c59e5ff Bump HTMLKit version to 3.0.0 2019-03-28 22:19:58 +01:00
iska 2a641ddacd Update podspec for 3.0.0 2019-03-28 22:19:44 +01:00
iska 91d1f85c1b Update jazzy.yaml for 3.0.0 2019-03-28 22:19:32 +01:00
iska 85bd39963f Add Changelog entry for HTMLKit 3.0.0 2019-03-28 22:19:19 +01:00
iska 7cbfdb9c78 Introduce prefix for category methods to prevent collisions
See:
https://github.com/iabudiab/HTMLKit/issues/35
2019-03-26 23:23:08 +01:00
iska d756fc4298 Merge branch 'release/2.1.5' 2018-07-16 22:13:29 +02:00
iska 0fe6b7c42d Merge tag '2.1.5' into develop
no message
2018-07-16 22:13:29 +02:00
iska 7c2335184e Bump HTMLKit version to 2.1.5 2018-07-16 22:13:21 +02:00
iska 0c6084ba73 Update podspec for 2.1.4 2018-07-16 22:12:54 +02:00
iska 5201860073 Add Changelog entry for HTMLKit 2.1.5 2018-07-16 22:12:39 +02:00
iska cf21b88eb1 Add Changelog entry for HTMLKit 2.1.5 2018-07-16 22:12:30 +02:00
iska 7617fceff1 Add test for bug fix issue #30 2018-07-16 22:09:35 +02:00
iska bf0d8560b0 Merge branch 'release/2.1.4' 2018-05-01 20:08:30 +02:00
iska 8546168324 Merge branch 'release/2.1.3' 2018-03-21 22:52:09 +01:00
iska 682b19c242 Merge branch 'release/2.1.2' 2017-11-06 22:05:07 +01:00
iska 20cf2dc4d0 Merge branch 'hotfix/2.1.1' 2017-10-13 23:05:02 +02:00
51 changed files with 297 additions and 822 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
module: HTMLKit
module_version: 2.1.4
module_version: 3.0.0
author: Iskandar Abudiab
author_url: https://twitter.com/iabudiab
github_url: https://github.com/iabudiab/HTMLKit
+18
View File
@@ -1,5 +1,23 @@
# Change Log
## [3.0.0](https://github.com/iabudiab/HTMLKit/releases/tag/3.0.0)
Released on 2019.03.28
### Breaking Change
- Introduce prefix for `NSString` and `NSCharacterSet` categories to prevent collision with existing code (issue #35)
## [2.1.5](https://github.com/iabudiab/HTMLKit/releases/tag/2.1.5)
Released on 2018.07.16
### Fixes
- Parser would handle foreign attributes incorrectly (issue #30)
## [2.1.4](https://github.com/iabudiab/HTMLKit/releases/tag/2.1.4)
Released on 2018.05.01
@@ -1,29 +0,0 @@
import HTMLKit
HTMLSanitizingPolicy { (builder) in
builder
.allowCommonBlockElements()
.allowCommonInlineFormattingElements()
.allowElements(["p", "div"])
.allow(HTMLElementPolicy.identity(), onElements: ["b", "p"])
.allow(HTMLAttributePolicy.init(), onElements: [])
.disallowText(inElements: ["a"])
}
HTMLElementPolicy { (str) -> String in
return str
}
HTMLSanitizer { (builder) in
builder
.allowCommonBlockElements()
.allowCommonInlineFormattingElements()
.allowElements(["p", "div"])
.allow(HTMLElementPolicy.identity() , onElements: ["b", "p"])
.allow(HTMLAttributePolicy.init(), onElements: [])
.disallowText(inElements: ["a"])
}
+1 -2
View File
@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<playground version='6.0' target-platform='macos' display-mode='raw' last-migration='0800'>
<playground version='6.0' target-platform='macos' display-mode='rendered' last-migration='0800'>
<pages>
<page name='Intro'/>
<page name='Parsing Documents'/>
<page name='Parsing Fragments'/>
<page name='The DOM'/>
<page name='CSS Selectors'/>
<page name='Sanitizing HTML'/>
</pages>
</playground>
+1 -1
View File
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "HTMLKit"
s.version = "2.1.4"
s.version = "3.0.0"
s.summary = "HTMLKit, an Objective-C framework for your everyday HTML needs."
s.license = "MIT"
s.homepage = "https://github.com/iabudiab/HTMLKit"
+47 -145
View File
@@ -58,6 +58,18 @@
625A14B019C7829400AD0C32 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 625A14AF19C7829400AD0C32 /* Cocoa.framework */; };
625A14C519C7829400AD0C32 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 625A14C419C7829400AD0C32 /* XCTest.framework */; };
625A14C919C7829400AD0C32 /* HTMLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 625A14AC19C7829400AD0C32 /* HTMLKit.framework */; };
625A67C9224AC62C00C6D57D /* NSString+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 625A67C7224AC62C00C6D57D /* NSString+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
625A67CA224AC62C00C6D57D /* NSString+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 625A67C7224AC62C00C6D57D /* NSString+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
625A67CB224AC62C00C6D57D /* NSString+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 625A67C7224AC62C00C6D57D /* NSString+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
625A67CC224AC62C00C6D57D /* NSString+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 625A67C7224AC62C00C6D57D /* NSString+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
625A67CD224AC62C00C6D57D /* NSString+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 625A67C8224AC62C00C6D57D /* NSString+Private.m */; };
625A67CE224AC62C00C6D57D /* NSString+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 625A67C8224AC62C00C6D57D /* NSString+Private.m */; };
625A67CF224AC62C00C6D57D /* NSString+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 625A67C8224AC62C00C6D57D /* NSString+Private.m */; };
625A67D0224AC62C00C6D57D /* NSString+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 625A67C8224AC62C00C6D57D /* NSString+Private.m */; };
625A67D2224ADC7700C6D57D /* HTMLQuircksMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 625A67D1224ADC7700C6D57D /* HTMLQuircksMode.m */; };
625A67D3224ADC7700C6D57D /* HTMLQuircksMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 625A67D1224ADC7700C6D57D /* HTMLQuircksMode.m */; };
625A67D4224ADC7700C6D57D /* HTMLQuircksMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 625A67D1224ADC7700C6D57D /* HTMLQuircksMode.m */; };
625A67D5224ADC7700C6D57D /* HTMLQuircksMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 625A67D1224ADC7700C6D57D /* HTMLQuircksMode.m */; };
625D0F031C2717DE00D7BEB0 /* HTMLNode+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 625D0F011C2717DE00D7BEB0 /* HTMLNode+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
625D0F041C2717DE00D7BEB0 /* HTMLNode+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 625D0F011C2717DE00D7BEB0 /* HTMLNode+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
625EE4571CBAA41D00F2CC8E /* HTMLKitTestObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 625EE4561CBAA41D00F2CC8E /* HTMLKitTestObserver.m */; };
@@ -76,38 +88,6 @@
626BE1E71DF3819600C49514 /* HTMLDOMUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 626BE1E11DF3819500C49514 /* HTMLDOMUtils.m */; };
626BE1E81DF3819600C49514 /* HTMLDOMUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 626BE1E11DF3819500C49514 /* HTMLDOMUtils.m */; };
626BE1E91DF3819600C49514 /* HTMLDOMUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 626BE1E11DF3819500C49514 /* HTMLDOMUtils.m */; };
627E609D20B9C55400AB06E8 /* HTMLSanitizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E609B20B9C55400AB06E8 /* HTMLSanitizer.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E609E20B9C55400AB06E8 /* HTMLSanitizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E609B20B9C55400AB06E8 /* HTMLSanitizer.h */; };
627E609F20B9C55400AB06E8 /* HTMLSanitizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E609B20B9C55400AB06E8 /* HTMLSanitizer.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E60A020B9C55400AB06E8 /* HTMLSanitizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E609B20B9C55400AB06E8 /* HTMLSanitizer.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E60A120B9C55400AB06E8 /* HTMLSanitizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E609C20B9C55400AB06E8 /* HTMLSanitizer.m */; };
627E60A220B9C55400AB06E8 /* HTMLSanitizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E609C20B9C55400AB06E8 /* HTMLSanitizer.m */; };
627E60A320B9C55400AB06E8 /* HTMLSanitizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E609C20B9C55400AB06E8 /* HTMLSanitizer.m */; };
627E60A420B9C55400AB06E8 /* HTMLSanitizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E609C20B9C55400AB06E8 /* HTMLSanitizer.m */; };
627E60A820B9C58F00AB06E8 /* HTMLElementPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E60A620B9C58F00AB06E8 /* HTMLElementPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E60A920B9C58F00AB06E8 /* HTMLElementPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E60A620B9C58F00AB06E8 /* HTMLElementPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E60AA20B9C58F00AB06E8 /* HTMLElementPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E60A620B9C58F00AB06E8 /* HTMLElementPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E60AB20B9C58F00AB06E8 /* HTMLElementPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E60A620B9C58F00AB06E8 /* HTMLElementPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E60AC20B9C58F00AB06E8 /* HTMLElementPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E60A720B9C58F00AB06E8 /* HTMLElementPolicy.m */; };
627E60AD20B9C58F00AB06E8 /* HTMLElementPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E60A720B9C58F00AB06E8 /* HTMLElementPolicy.m */; };
627E60AE20B9C58F00AB06E8 /* HTMLElementPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E60A720B9C58F00AB06E8 /* HTMLElementPolicy.m */; };
627E60AF20B9C58F00AB06E8 /* HTMLElementPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E60A720B9C58F00AB06E8 /* HTMLElementPolicy.m */; };
627E60BC20BA015100AB06E8 /* HTMLSanitizingPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E60BA20BA015100AB06E8 /* HTMLSanitizingPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E60BD20BA015100AB06E8 /* HTMLSanitizingPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E60BA20BA015100AB06E8 /* HTMLSanitizingPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E60BE20BA015100AB06E8 /* HTMLSanitizingPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E60BA20BA015100AB06E8 /* HTMLSanitizingPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E60BF20BA015100AB06E8 /* HTMLSanitizingPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E60BA20BA015100AB06E8 /* HTMLSanitizingPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E60C020BA015100AB06E8 /* HTMLSanitizingPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E60BB20BA015100AB06E8 /* HTMLSanitizingPolicy.m */; };
627E60C120BA015100AB06E8 /* HTMLSanitizingPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E60BB20BA015100AB06E8 /* HTMLSanitizingPolicy.m */; };
627E60C220BA015100AB06E8 /* HTMLSanitizingPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E60BB20BA015100AB06E8 /* HTMLSanitizingPolicy.m */; };
627E60C320BA015100AB06E8 /* HTMLSanitizingPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E60BB20BA015100AB06E8 /* HTMLSanitizingPolicy.m */; };
627E60C620BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E60C420BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E60C720BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E60C420BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E60C820BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E60C420BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E60C920BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 627E60C420BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; };
627E60CA20BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E60C520BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.m */; };
627E60CB20BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E60C520BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.m */; };
627E60CC20BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E60C520BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.m */; };
627E60CD20BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 627E60C520BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.m */; };
62857C6B1D3988EE008DC254 /* HTMLKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 625A14BC19C7829400AD0C32 /* HTMLKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
62857C6C1D3988EE008DC254 /* HTMLKitErrorDomain.h in Headers */ = {isa = PBXBuildFile; fileRef = 626652F81C03D30F00C3F121 /* HTMLKitErrorDomain.h */; settings = {ATTRIBUTES = (Public, ); }; };
62857C6D1D398907008DC254 /* HTMLInputStreamReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 625A150619C78ABA00AD0C32 /* HTMLInputStreamReader.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -341,17 +321,12 @@
62857D8F1D39A47F008DC254 /* CSSCombinatorSelector.h in Headers */ = {isa = PBXBuildFile; fileRef = 62FA04E11BCC360D009ABF98 /* CSSCombinatorSelector.h */; settings = {ATTRIBUTES = (Public, ); }; };
62857D901D39A47F008DC254 /* CSSCompoundSelector.h in Headers */ = {isa = PBXBuildFile; fileRef = 620C87791BD44CBE00FB3EEE /* CSSCompoundSelector.h */; settings = {ATTRIBUTES = (Public, ); }; };
628AF6301BC99A6C00496128 /* CSSNthExpressionsParserTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 628AF62E1BC99A6C00496128 /* CSSNthExpressionsParserTests.m */; };
62A6CDCE20BC9A3D00351AAE /* HTMLAttributePolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 62A6CDCC20BC9A3D00351AAE /* HTMLAttributePolicy.h */; settings = {ATTRIBUTES = (Public, ); }; };
62A6CDCF20BC9A3D00351AAE /* HTMLAttributePolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 62A6CDCC20BC9A3D00351AAE /* HTMLAttributePolicy.h */; settings = {ATTRIBUTES = (Public, ); }; };
62A6CDD020BC9A3D00351AAE /* HTMLAttributePolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 62A6CDCC20BC9A3D00351AAE /* HTMLAttributePolicy.h */; settings = {ATTRIBUTES = (Public, ); }; };
62A6CDD120BC9A3D00351AAE /* HTMLAttributePolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 62A6CDCC20BC9A3D00351AAE /* HTMLAttributePolicy.h */; settings = {ATTRIBUTES = (Public, ); }; };
62A6CDD220BC9A3D00351AAE /* HTMLAttributePolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 62A6CDCD20BC9A3D00351AAE /* HTMLAttributePolicy.m */; };
62A6CDD320BC9A3D00351AAE /* HTMLAttributePolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 62A6CDCD20BC9A3D00351AAE /* HTMLAttributePolicy.m */; };
62A6CDD420BC9A3D00351AAE /* HTMLAttributePolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 62A6CDCD20BC9A3D00351AAE /* HTMLAttributePolicy.m */; };
62A6CDD520BC9A3D00351AAE /* HTMLAttributePolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 62A6CDCD20BC9A3D00351AAE /* HTMLAttributePolicy.m */; };
62A95A4D1FB0FBFC0009FF26 /* HTMLSerializationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62A95A4C1FB0FBFC0009FF26 /* HTMLSerializationTests.m */; };
62A95A4E1FB0FBFC0009FF26 /* HTMLSerializationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62A95A4C1FB0FBFC0009FF26 /* HTMLSerializationTests.m */; };
62A95A4F1FB0FBFC0009FF26 /* HTMLSerializationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62A95A4C1FB0FBFC0009FF26 /* HTMLSerializationTests.m */; };
62C82E0D20FD2FFD008497A8 /* HTMLKitParserIssuesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62C82E0C20FD2FFD008497A8 /* HTMLKitParserIssuesTests.m */; };
62C82E0E20FD2FFD008497A8 /* HTMLKitParserIssuesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62C82E0C20FD2FFD008497A8 /* HTMLKitParserIssuesTests.m */; };
62C82E0F20FD2FFD008497A8 /* HTMLKitParserIssuesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62C82E0C20FD2FFD008497A8 /* HTMLKitParserIssuesTests.m */; };
62D8345A19FB1AC4009205A9 /* HTML5LibTokenizerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 62D8345819FB1AC4009205A9 /* HTML5LibTokenizerTest.m */; };
62D91C231DE218A500BEFADE /* HTMLRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 62D91C211DE218A500BEFADE /* HTMLRange.h */; settings = {ATTRIBUTES = (Public, ); }; };
62D91C241DE218A500BEFADE /* HTMLRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 62D91C211DE218A500BEFADE /* HTMLRange.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -367,14 +342,6 @@
62E1A3B51E610E5300C41C3B /* Fixtures in Resources */ = {isa = PBXBuildFile; fileRef = 62E1A3B41E610E5300C41C3B /* Fixtures */; };
62E1A3B61E610E5300C41C3B /* Fixtures in Resources */ = {isa = PBXBuildFile; fileRef = 62E1A3B41E610E5300C41C3B /* Fixtures */; };
62E1A3B71E610E5300C41C3B /* Fixtures in Resources */ = {isa = PBXBuildFile; fileRef = 62E1A3B41E610E5300C41C3B /* Fixtures */; };
62E2BC0D20C0A93300979D71 /* HTMLTokenPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 62E2BC0B20C0A93300979D71 /* HTMLTokenPolicy.h */; };
62E2BC0E20C0A93300979D71 /* HTMLTokenPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 62E2BC0B20C0A93300979D71 /* HTMLTokenPolicy.h */; };
62E2BC0F20C0A93300979D71 /* HTMLTokenPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 62E2BC0B20C0A93300979D71 /* HTMLTokenPolicy.h */; };
62E2BC1020C0A93300979D71 /* HTMLTokenPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 62E2BC0B20C0A93300979D71 /* HTMLTokenPolicy.h */; };
62E2BC1120C0A93300979D71 /* HTMLTokenPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 62E2BC0C20C0A93300979D71 /* HTMLTokenPolicy.m */; };
62E2BC1220C0A93300979D71 /* HTMLTokenPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 62E2BC0C20C0A93300979D71 /* HTMLTokenPolicy.m */; };
62E2BC1320C0A93300979D71 /* HTMLTokenPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 62E2BC0C20C0A93300979D71 /* HTMLTokenPolicy.m */; };
62E2BC1420C0A93300979D71 /* HTMLTokenPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 62E2BC0C20C0A93300979D71 /* HTMLTokenPolicy.m */; };
62EC0A851E158BD80007786B /* HTMLRangeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62EC0A841E158BD80007786B /* HTMLRangeTests.m */; };
62EC0A861E158BD80007786B /* HTMLRangeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62EC0A841E158BD80007786B /* HTMLRangeTests.m */; };
62EC0A871E158BD80007786B /* HTMLRangeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 62EC0A841E158BD80007786B /* HTMLRangeTests.m */; };
@@ -737,6 +704,9 @@
625A14DF19C7834100AD0C32 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
625A150619C78ABA00AD0C32 /* HTMLInputStreamReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLInputStreamReader.h; path = include/HTMLInputStreamReader.h; sourceTree = "<group>"; };
625A150719C78ABA00AD0C32 /* HTMLInputStreamReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLInputStreamReader.m; sourceTree = "<group>"; };
625A67C7224AC62C00C6D57D /* NSString+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "NSString+Private.h"; path = "include/NSString+Private.h"; sourceTree = "<group>"; };
625A67C8224AC62C00C6D57D /* NSString+Private.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+Private.m"; sourceTree = "<group>"; };
625A67D1224ADC7700C6D57D /* HTMLQuircksMode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTMLQuircksMode.m; sourceTree = "<group>"; };
625D0F011C2717DE00D7BEB0 /* HTMLNode+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "HTMLNode+Private.h"; path = "include/HTMLNode+Private.h"; sourceTree = "<group>"; };
625EE4551CBAA41D00F2CC8E /* HTMLKitTestObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLKitTestObserver.h; path = HTMLKitTests/HTMLKitTestObserver.h; sourceTree = "<group>"; };
625EE4561CBAA41D00F2CC8E /* HTMLKitTestObserver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HTMLKitTestObserver.m; path = HTMLKitTests/HTMLKitTestObserver.m; sourceTree = "<group>"; };
@@ -749,14 +719,6 @@
6279F87119E17DC700F12EE5 /* HTMLParserInsertionModes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HTMLParserInsertionModes.h; path = include/HTMLParserInsertionModes.h; sourceTree = "<group>"; };
6279F87219E1808D00F12EE5 /* HTMLElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLElement.h; path = include/HTMLElement.h; sourceTree = "<group>"; };
6279F87319E1808D00F12EE5 /* HTMLElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLElement.m; sourceTree = "<group>"; };
627E609B20B9C55400AB06E8 /* HTMLSanitizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLSanitizer.h; sourceTree = "<group>"; };
627E609C20B9C55400AB06E8 /* HTMLSanitizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTMLSanitizer.m; sourceTree = "<group>"; };
627E60A620B9C58F00AB06E8 /* HTMLElementPolicy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLElementPolicy.h; sourceTree = "<group>"; };
627E60A720B9C58F00AB06E8 /* HTMLElementPolicy.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTMLElementPolicy.m; sourceTree = "<group>"; };
627E60BA20BA015100AB06E8 /* HTMLSanitizingPolicy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLSanitizingPolicy.h; sourceTree = "<group>"; };
627E60BB20BA015100AB06E8 /* HTMLSanitizingPolicy.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTMLSanitizingPolicy.m; sourceTree = "<group>"; };
627E60C420BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLSanitizingPolicyBuilder.h; sourceTree = "<group>"; };
627E60C520BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTMLSanitizingPolicyBuilder.m; sourceTree = "<group>"; };
62857C4E1D398642008DC254 /* HTMLKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HTMLKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
62857CEA1D39A262008DC254 /* HTMLKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HTMLKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
62857CF31D39A262008DC254 /* HTMLKit-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "HTMLKit-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -766,8 +728,6 @@
628AF63C1BC9D6FB00496128 /* CSSStructuralPseudoSelectors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CSSStructuralPseudoSelectors.h; path = include/CSSStructuralPseudoSelectors.h; sourceTree = "<group>"; };
628AF63D1BC9D6FB00496128 /* CSSStructuralPseudoSelectors.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSSStructuralPseudoSelectors.m; sourceTree = "<group>"; };
628B7CE61A080E1000602C87 /* HTMLNamespaces.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HTMLNamespaces.h; path = include/HTMLNamespaces.h; sourceTree = "<group>"; };
62A6CDCC20BC9A3D00351AAE /* HTMLAttributePolicy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLAttributePolicy.h; sourceTree = "<group>"; };
62A6CDCD20BC9A3D00351AAE /* HTMLAttributePolicy.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTMLAttributePolicy.m; sourceTree = "<group>"; };
62A95A4C1FB0FBFC0009FF26 /* HTMLSerializationTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = HTMLSerializationTests.m; path = HTMLKitTests/HTMLSerializationTests.m; sourceTree = "<group>"; };
62ACB8DB1BC5C13E00E283C1 /* CSSPseudoFunctionSelector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CSSPseudoFunctionSelector.h; path = include/CSSPseudoFunctionSelector.h; sourceTree = "<group>"; };
62ACB8DC1BC5C13E00E283C1 /* CSSPseudoFunctionSelector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSSPseudoFunctionSelector.m; sourceTree = "<group>"; };
@@ -781,14 +741,13 @@
62AE594319F992F30043F069 /* HTMLCommentToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLCommentToken.m; sourceTree = "<group>"; };
62AE594719F9948A0043F069 /* HTMLCharacterToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLCharacterToken.h; path = include/HTMLCharacterToken.h; sourceTree = "<group>"; };
62AE594819F9948A0043F069 /* HTMLCharacterToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLCharacterToken.m; sourceTree = "<group>"; };
62C82E0C20FD2FFD008497A8 /* HTMLKitParserIssuesTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = HTMLKitParserIssuesTests.m; path = HTMLKitTests/HTMLKitParserIssuesTests.m; sourceTree = "<group>"; };
62D8345719FB1AC4009205A9 /* HTML5LibTokenizerTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTML5LibTokenizerTest.h; path = HTMLKitTests/HTML5LibTokenizerTest.h; sourceTree = "<group>"; };
62D8345819FB1AC4009205A9 /* HTML5LibTokenizerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HTML5LibTokenizerTest.m; path = HTMLKitTests/HTML5LibTokenizerTest.m; sourceTree = "<group>"; };
62D91C211DE218A500BEFADE /* HTMLRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTMLRange.h; path = include/HTMLRange.h; sourceTree = "<group>"; };
62D91C221DE218A500BEFADE /* HTMLRange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLRange.m; sourceTree = "<group>"; };
62E0BA961E25456700E4D193 /* HTMLCharacterDataTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HTMLCharacterDataTests.m; path = HTMLKitTests/HTMLCharacterDataTests.m; sourceTree = "<group>"; };
62E1A3B41E610E5300C41C3B /* Fixtures */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Fixtures; sourceTree = "<group>"; };
62E2BC0B20C0A93300979D71 /* HTMLTokenPolicy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLTokenPolicy.h; sourceTree = "<group>"; };
62E2BC0C20C0A93300979D71 /* HTMLTokenPolicy.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTMLTokenPolicy.m; sourceTree = "<group>"; };
62E7CAAE19CDFFB500465A83 /* HTMLTokenizerCharacters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HTMLTokenizerCharacters.h; path = include/HTMLTokenizerCharacters.h; sourceTree = "<group>"; };
62EC0A841E158BD80007786B /* HTMLRangeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HTMLRangeTests.m; path = HTMLKitTests/HTMLRangeTests.m; sourceTree = "<group>"; };
62EC7AE51AEEAC6F0015D3BE /* HTMLMutationAlgorithmsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HTMLMutationAlgorithmsTests.m; path = HTMLKitTests/HTMLMutationAlgorithmsTests.m; sourceTree = "<group>"; };
@@ -928,6 +887,7 @@
6238C9841AB8D6330006512E /* HTMLKitDOMExceptions.m */,
628B7CE61A080E1000602C87 /* HTMLNamespaces.h */,
623719431AA12EE8002E03C8 /* HTMLQuirksMode.h */,
625A67D1224ADC7700C6D57D /* HTMLQuircksMode.m */,
625D0F071C2717E400D7BEB0 /* Private */,
);
name = DOM;
@@ -1026,7 +986,6 @@
625A14BC19C7829400AD0C32 /* HTMLKit.h */,
626652F81C03D30F00C3F121 /* HTMLKitErrorDomain.h */,
62AE593219F97CCA0043F069 /* Tokenizing */,
627E609A20B9C53B00AB06E8 /* Sanitizing */,
628E16EC1ADAE71700B15A06 /* Parsing */,
623719441AA1472B002E03C8 /* DOM */,
628E16ED1ADAE73700B15A06 /* Categories */,
@@ -1054,6 +1013,7 @@
625EE45A1CBB171300F2CC8E /* HTMLKitTestUtil.m */,
6236738C1AC0CD2400FF89B3 /* Tokenizer */,
623975581AC362A5007E26F1 /* Tree Construction */,
62C82E0B20FD2FCB008497A8 /* Parser */,
624B9FB71AE072CB00646C4C /* DOM */,
624B9FB81AE072D500646C4C /* Categories */,
624E1A2D1B1D1C8A00E66AAC /* Structures */,
@@ -1090,33 +1050,6 @@
name = Private;
sourceTree = "<group>";
};
627E609A20B9C53B00AB06E8 /* Sanitizing */ = {
isa = PBXGroup;
children = (
627E609B20B9C55400AB06E8 /* HTMLSanitizer.h */,
627E609C20B9C55400AB06E8 /* HTMLSanitizer.m */,
627E60BA20BA015100AB06E8 /* HTMLSanitizingPolicy.h */,
627E60BB20BA015100AB06E8 /* HTMLSanitizingPolicy.m */,
627E60C420BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.h */,
627E60C520BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.m */,
627E60A520B9C55900AB06E8 /* Policies */,
);
name = Sanitizing;
sourceTree = "<group>";
};
627E60A520B9C55900AB06E8 /* Policies */ = {
isa = PBXGroup;
children = (
62E2BC0B20C0A93300979D71 /* HTMLTokenPolicy.h */,
62E2BC0C20C0A93300979D71 /* HTMLTokenPolicy.m */,
627E60A620B9C58F00AB06E8 /* HTMLElementPolicy.h */,
627E60A720B9C58F00AB06E8 /* HTMLElementPolicy.m */,
62A6CDCC20BC9A3D00351AAE /* HTMLAttributePolicy.h */,
62A6CDCD20BC9A3D00351AAE /* HTMLAttributePolicy.m */,
);
name = Policies;
sourceTree = "<group>";
};
628E16EC1ADAE71700B15A06 /* Parsing */ = {
isa = PBXGroup;
children = (
@@ -1138,6 +1071,8 @@
628E16ED1ADAE73700B15A06 /* Categories */ = {
isa = PBXGroup;
children = (
625A67C7224AC62C00C6D57D /* NSString+Private.h */,
625A67C8224AC62C00C6D57D /* NSString+Private.m */,
6235CE991AA509430026937B /* NSString+HTMLKit.h */,
6235CE9A1AA509430026937B /* NSString+HTMLKit.m */,
624B28C21B04190D0048D328 /* NSCharacterSet+HTMLKit.h */,
@@ -1166,14 +1101,6 @@
62E7CAAE19CDFFB500465A83 /* HTMLTokenizerCharacters.h */,
62F31FDB19E9DCCF007F0657 /* HTMLTokenizerEntities.h */,
62F31FDC19E9DCCF007F0657 /* HTMLTokenizerEntities.m */,
62E2BC1520C0AAD000979D71 /* Tokens */,
);
name = Tokenizing;
sourceTree = "<group>";
};
62E2BC1520C0AAD000979D71 /* Tokens */ = {
isa = PBXGroup;
children = (
624AC8FE19FBF4F700BD3C4A /* HTMLTokens.h */,
624493AA19CD0CBE00BCDDF4 /* HTMLToken.h */,
624493AB19CD0CBE00BCDDF4 /* HTMLToken.m */,
@@ -1190,7 +1117,15 @@
6238039D1AB63A8C008A53D0 /* HTMLEOFToken.h */,
6238039E1AB63A8C008A53D0 /* HTMLEOFToken.m */,
);
name = Tokens;
name = Tokenizing;
sourceTree = "<group>";
};
62C82E0B20FD2FCB008497A8 /* Parser */ = {
isa = PBXGroup;
children = (
62C82E0C20FD2FFD008497A8 /* HTMLKitParserIssuesTests.m */,
);
name = Parser;
sourceTree = "<group>";
};
62ECBEDF1C0B671000AF847B /* Parsing */ = {
@@ -1264,16 +1199,15 @@
62D91C231DE218A500BEFADE /* HTMLRange.h in Headers */,
62ECBEE51C0B69FD00AF847B /* HTMLTokenizerCharacters.h in Headers */,
62ECBEE61C0B69FD00AF847B /* HTMLTokenizerEntities.h in Headers */,
627E60A820B9C58F00AB06E8 /* HTMLElementPolicy.h in Headers */,
625D0F031C2717DE00D7BEB0 /* HTMLNode+Private.h in Headers */,
62ECBEE71C0B69FD00AF847B /* HTMLTokens.h in Headers */,
62ECBF1B1C0B6ABF00AF847B /* HTMLElement.h in Headers */,
62ECBEE81C0B69FD00AF847B /* HTMLToken.h in Headers */,
62ECBEE91C0B69FD00AF847B /* HTMLCharacterToken.h in Headers */,
627E60C620BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.h in Headers */,
62ECBEEA1C0B69FD00AF847B /* HTMLCommentToken.h in Headers */,
62ECBEEB1C0B69FD00AF847B /* HTMLDOCTYPEToken.h in Headers */,
626BE1E21DF3819500C49514 /* HTMLDOMUtils.h in Headers */,
625A67C9224AC62C00C6D57D /* NSString+Private.h in Headers */,
62ECBEEC1C0B69FD00AF847B /* HTMLParseErrorToken.h in Headers */,
62ECBEED1C0B69FD00AF847B /* HTMLTagToken.h in Headers */,
62ECBEEE1C0B69FD00AF847B /* HTMLEOFToken.h in Headers */,
@@ -1285,7 +1219,6 @@
62ECBEF11C0B69FD00AF847B /* HTMLListOfActiveFormattingElements.h in Headers */,
62ECBEF21C0B69FD00AF847B /* HTMLElementTypes.h in Headers */,
62ECBEF31C0B69FD00AF847B /* HTMLElementAdjustment.h in Headers */,
627E60BC20BA015100AB06E8 /* HTMLSanitizingPolicy.h in Headers */,
62ECBEF41C0B69FD00AF847B /* HTMLParserInsertionModes.h in Headers */,
624C777A1DE9D05E00DD6DFA /* HTMLCharacterData.h in Headers */,
62ECBEF51C0B69FD00AF847B /* HTMLMarker.h in Headers */,
@@ -1293,13 +1226,11 @@
62ECBEF71C0B69FE00AF847B /* HTMLNode.h in Headers */,
621CC4A51DEA721A00D1992A /* HTMLParser+Private.h in Headers */,
62ECBEF81C0B69FE00AF847B /* HTMLDocument.h in Headers */,
62E2BC0D20C0A93300979D71 /* HTMLTokenPolicy.h in Headers */,
62ECBEF91C0B69FE00AF847B /* HTMLDocumentType.h in Headers */,
62ECBEFA1C0B69FE00AF847B /* HTMLDocumentFragment.h in Headers */,
62ECBEFC1C0B69FE00AF847B /* HTMLComment.h in Headers */,
62ECBEFD1C0B69FE00AF847B /* HTMLText.h in Headers */,
62ECBEFE1C0B69FE00AF847B /* HTMLTemplate.h in Headers */,
627E609D20B9C55400AB06E8 /* HTMLSanitizer.h in Headers */,
62ECBEFF1C0B69FE00AF847B /* HTMLNodeIterator.h in Headers */,
62ECBF001C0B69FF00AF847B /* HTMLTreeWalker.h in Headers */,
62ECBF011C0B69FF00AF847B /* HTMLNodeTraversal.h in Headers */,
@@ -1325,7 +1256,6 @@
62ECBF131C0B6A0200AF847B /* CSSPseudoClassSelector.h in Headers */,
62ECBF141C0B6A0200AF847B /* CSSNthExpressionSelector.h in Headers */,
62ECBF151C0B6A0200AF847B /* CSSPseudoFunctionSelector.h in Headers */,
62A6CDCE20BC9A3D00351AAE /* HTMLAttributePolicy.h in Headers */,
62ECBF161C0B6A0300AF847B /* CSSCombinatorSelector.h in Headers */,
62ECBF171C0B6A0300AF847B /* CSSCompoundSelector.h in Headers */,
);
@@ -1343,16 +1273,15 @@
62857CA31D398973008DC254 /* HTMLDocumentType.h in Headers */,
62D91C261DE218A500BEFADE /* HTMLRange.h in Headers */,
62857C6B1D3988EE008DC254 /* HTMLKit.h in Headers */,
627E60AB20B9C58F00AB06E8 /* HTMLElementPolicy.h in Headers */,
62857C701D398907008DC254 /* HTMLTokenizerCharacters.h in Headers */,
62857C6F1D398907008DC254 /* HTMLTokenizerStates.h in Headers */,
62857C721D398907008DC254 /* HTMLTokens.h in Headers */,
62857CBF1D398999008DC254 /* NSCharacterSet+HTMLKit.h in Headers */,
62857CDD1D3989CE008DC254 /* CSSNthExpressionSelector.h in Headers */,
627E60C920BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.h in Headers */,
62857C841D398917008DC254 /* HTMLParser.h in Headers */,
62857CDB1D3989CE008DC254 /* CSSAttributeSelector.h in Headers */,
62857C791D398907008DC254 /* HTMLEOFToken.h in Headers */,
625A67CC224AC62C00C6D57D /* NSString+Private.h in Headers */,
626BE1E51DF3819500C49514 /* HTMLDOMUtils.h in Headers */,
62857CC41D3989A9008DC254 /* CSSSelectors.h in Headers */,
62857C731D398907008DC254 /* HTMLToken.h in Headers */,
@@ -1364,7 +1293,6 @@
62857CA61D398973008DC254 /* HTMLText.h in Headers */,
62857C751D398907008DC254 /* HTMLCommentToken.h in Headers */,
62857C891D398927008DC254 /* HTMLParserInsertionModes.h in Headers */,
627E60BF20BA015100AB06E8 /* HTMLSanitizingPolicy.h in Headers */,
62857CA81D398973008DC254 /* HTMLDOMTokenList.h in Headers */,
62857C851D398927008DC254 /* HTMLStackOfOpenElements.h in Headers */,
624C777D1DE9D05E00DD6DFA /* HTMLCharacterData.h in Headers */,
@@ -1372,13 +1300,11 @@
62857CA91D398973008DC254 /* HTMLNodeIterator.h in Headers */,
62857CAE1D398973008DC254 /* HTMLQuirksMode.h in Headers */,
621CC4A81DEA721A00D1992A /* HTMLParser+Private.h in Headers */,
62E2BC1020C0A93300979D71 /* HTMLTokenPolicy.h in Headers */,
62857CAF1D398977008DC254 /* HTMLNodeTraversal.h in Headers */,
62857C771D398907008DC254 /* HTMLParseErrorToken.h in Headers */,
62857CDC1D3989CE008DC254 /* CSSPseudoClassSelector.h in Headers */,
62857CC21D3989A1008DC254 /* HTMLOrderedDictionary.h in Headers */,
62857C761D398907008DC254 /* HTMLDOCTYPEToken.h in Headers */,
627E60A020B9C55400AB06E8 /* HTMLSanitizer.h in Headers */,
62857CE21D39A119008DC254 /* HTMLNode+Private.h in Headers */,
62857CD71D3989C2008DC254 /* CSSNthExpressionParser.h in Headers */,
62857CAD1D398973008DC254 /* HTMLNamespaces.h in Headers */,
@@ -1404,7 +1330,6 @@
62857C6C1D3988EE008DC254 /* HTMLKitErrorDomain.h in Headers */,
62857CD51D3989BF008DC254 /* CSSInputStream.h in Headers */,
62857C741D398907008DC254 /* HTMLCharacterToken.h in Headers */,
62A6CDD120BC9A3D00351AAE /* HTMLAttributePolicy.h in Headers */,
62857CE31D39A1B5008DC254 /* HTMLElement.h in Headers */,
62857CA71D398973008DC254 /* HTMLTemplate.h in Headers */,
);
@@ -1422,16 +1347,15 @@
62857D7E1D39A45B008DC254 /* HTMLNode+Private.h in Headers */,
62D91C251DE218A500BEFADE /* HTMLRange.h in Headers */,
62857D701D39A44E008DC254 /* HTMLDocumentType.h in Headers */,
627E60AA20B9C58F00AB06E8 /* HTMLElementPolicy.h in Headers */,
62857D861D39A476008DC254 /* CSSCodePoints.h in Headers */,
62857D8A1D39A47F008DC254 /* CSSTypeSelector.h in Headers */,
62857D491D39A3F4008DC254 /* HTMLKit.h in Headers */,
62857D8D1D39A47F008DC254 /* CSSNthExpressionSelector.h in Headers */,
62857D721D39A44E008DC254 /* HTMLElement.h in Headers */,
627E60C820BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.h in Headers */,
62857D4E1D39A40A008DC254 /* HTMLTokenizerCharacters.h in Headers */,
62857D4D1D39A40A008DC254 /* HTMLTokenizerStates.h in Headers */,
62857D501D39A411008DC254 /* HTMLTokens.h in Headers */,
625A67CB224AC62C00C6D57D /* NSString+Private.h in Headers */,
626BE1E41DF3819500C49514 /* HTMLDOMUtils.h in Headers */,
62857D7B1D39A452008DC254 /* HTMLNamespaces.h in Headers */,
62857D581D39A416008DC254 /* HTMLParser.h in Headers */,
@@ -1443,7 +1367,6 @@
62857D531D39A411008DC254 /* HTMLCommentToken.h in Headers */,
62857D741D39A44E008DC254 /* HTMLText.h in Headers */,
62857D5D1D39A41D008DC254 /* HTMLParserInsertionModes.h in Headers */,
627E60BE20BA015100AB06E8 /* HTMLSanitizingPolicy.h in Headers */,
62857D591D39A41D008DC254 /* HTMLStackOfOpenElements.h in Headers */,
62857D781D39A44E008DC254 /* HTMLTreeWalker.h in Headers */,
624C777C1DE9D05E00DD6DFA /* HTMLCharacterData.h in Headers */,
@@ -1451,13 +1374,11 @@
62857D541D39A411008DC254 /* HTMLDOCTYPEToken.h in Headers */,
62857D871D39A476008DC254 /* CSSInputStream.h in Headers */,
621CC4A71DEA721A00D1992A /* HTMLParser+Private.h in Headers */,
62E2BC0F20C0A93300979D71 /* HTMLTokenPolicy.h in Headers */,
62857D8F1D39A47F008DC254 /* CSSCombinatorSelector.h in Headers */,
62857D5C1D39A41D008DC254 /* HTMLElementAdjustment.h in Headers */,
62857D891D39A47F008DC254 /* CSSSelectorBlock.h in Headers */,
62857D6D1D39A44E008DC254 /* HTMLDOM.h in Headers */,
62857D751D39A44E008DC254 /* HTMLTemplate.h in Headers */,
627E609F20B9C55400AB06E8 /* HTMLSanitizer.h in Headers */,
62857D771D39A44E008DC254 /* HTMLNodeIterator.h in Headers */,
62857D711D39A44E008DC254 /* HTMLDocumentFragment.h in Headers */,
62857D851D39A472008DC254 /* CSSNthExpressionParser.h in Headers */,
@@ -1483,7 +1404,6 @@
62857D4A1D39A3F4008DC254 /* HTMLKitErrorDomain.h in Headers */,
62857D7C1D39A452008DC254 /* HTMLQuirksMode.h in Headers */,
62857D791D39A44E008DC254 /* HTMLNodeFilter.h in Headers */,
62A6CDD020BC9A3D00351AAE /* HTMLAttributePolicy.h in Headers */,
62857D521D39A411008DC254 /* HTMLCharacterToken.h in Headers */,
62857D811D39A466008DC254 /* HTMLOrderedDictionary.h in Headers */,
);
@@ -1501,16 +1421,15 @@
62D91C241DE218A500BEFADE /* HTMLRange.h in Headers */,
62ECBFA81C0B6D3A00AF847B /* HTMLDocument.h in Headers */,
62ECBFA91C0B6D3A00AF847B /* HTMLDocumentType.h in Headers */,
627E60A920B9C58F00AB06E8 /* HTMLElementPolicy.h in Headers */,
62ECBFAA1C0B6D3A00AF847B /* HTMLDocumentFragment.h in Headers */,
62ECBFAB1C0B6D3B00AF847B /* HTMLElement.h in Headers */,
62ECBFAC1C0B6D3B00AF847B /* HTMLComment.h in Headers */,
62ECBFAD1C0B6D3B00AF847B /* HTMLText.h in Headers */,
62ECBFAE1C0B6D3B00AF847B /* HTMLTemplate.h in Headers */,
627E60C720BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.h in Headers */,
62ECBFAF1C0B6D3B00AF847B /* HTMLNodeIterator.h in Headers */,
62ECBFB01C0B6D3C00AF847B /* HTMLTreeWalker.h in Headers */,
62ECBFB21C0B6D3C00AF847B /* HTMLNodeFilter.h in Headers */,
625A67CA224AC62C00C6D57D /* NSString+Private.h in Headers */,
62567F511C0CB5750025D458 /* HTMLDOMTokenList.h in Headers */,
62ECBFB31C0B6D3C00AF847B /* HTMLKitDOMExceptions.h in Headers */,
62ECBFB41C0B6D3D00AF847B /* HTMLNamespaces.h in Headers */,
@@ -1522,7 +1441,6 @@
62ECBFB81C0B6D3E00AF847B /* HTMLOrderedDictionary.h in Headers */,
62ECBFB91C0B6D3E00AF847B /* CSSSelectors.h in Headers */,
62ECBFBA1C0B6D3E00AF847B /* CSSStructuralPseudoSelectors.h in Headers */,
627E60BD20BA015100AB06E8 /* HTMLSanitizingPolicy.h in Headers */,
624C777B1DE9D05E00DD6DFA /* HTMLCharacterData.h in Headers */,
62ECBFBD1C0B6D3F00AF847B /* CSSSelectorParser.h in Headers */,
62ECBFBE1C0B6D4000AF847B /* CSSNthExpressionParser.h in Headers */,
@@ -1530,13 +1448,11 @@
621CC4A61DEA721A00D1992A /* HTMLParser+Private.h in Headers */,
62ECBFC01C0B6D4000AF847B /* CSSSelectorBlock.h in Headers */,
62ECBFC11C0B6D4100AF847B /* CSSTypeSelector.h in Headers */,
62E2BC0E20C0A93300979D71 /* HTMLTokenPolicy.h in Headers */,
62ECBFC21C0B6D4100AF847B /* CSSAttributeSelector.h in Headers */,
62ECBFC31C0B6D4100AF847B /* CSSPseudoClassSelector.h in Headers */,
62ECBFC41C0B6D4200AF847B /* CSSNthExpressionSelector.h in Headers */,
62ECBFC51C0B6D4200AF847B /* CSSPseudoFunctionSelector.h in Headers */,
62ECBFC61C0B6D4300AF847B /* CSSCombinatorSelector.h in Headers */,
627E609E20B9C55400AB06E8 /* HTMLSanitizer.h in Headers */,
62F7E5A31DEB63F900DEF09B /* HTMLRange+Private.h in Headers */,
626BE1E31DF3819500C49514 /* HTMLDOMUtils.h in Headers */,
625D0F041C2717DE00D7BEB0 /* HTMLNode+Private.h in Headers */,
@@ -1562,7 +1478,6 @@
62ECBFA31C0B6D3900AF847B /* HTMLElementAdjustment.h in Headers */,
62ECBFA41C0B6D3900AF847B /* HTMLParserInsertionModes.h in Headers */,
62ECBFA51C0B6D3900AF847B /* HTMLMarker.h in Headers */,
62A6CDCF20BC9A3D00351AAE /* HTMLAttributePolicy.h in Headers */,
62ECBFBB1C0B6D3F00AF847B /* CSSCodePoints.h in Headers */,
62ECBFBC1C0B6D3F00AF847B /* CSSInputStream.h in Headers */,
);
@@ -1823,8 +1738,6 @@
62ECBF1D1C0B6B7900AF847B /* HTMLTokenizer.m in Sources */,
62ECBF1E1C0B6B7900AF847B /* HTMLTokenizerEntities.m in Sources */,
62ECBF1F1C0B6B7900AF847B /* HTMLToken.m in Sources */,
62E2BC1120C0A93300979D71 /* HTMLTokenPolicy.m in Sources */,
627E60A120B9C55400AB06E8 /* HTMLSanitizer.m in Sources */,
62ECBF201C0B6B7900AF847B /* HTMLCharacterToken.m in Sources */,
62ECBF211C0B6B7900AF847B /* HTMLCommentToken.m in Sources */,
62ECBF221C0B6B7900AF847B /* HTMLDOCTYPEToken.m in Sources */,
@@ -1839,10 +1752,10 @@
62ECBF2A1C0B6B7900AF847B /* HTMLNode.m in Sources */,
62ECBF2B1C0B6B7900AF847B /* HTMLDocument.m in Sources */,
62ECBF2C1C0B6B7900AF847B /* HTMLDocumentType.m in Sources */,
625A67D2224ADC7700C6D57D /* HTMLQuircksMode.m in Sources */,
62ECBF2D1C0B6B7900AF847B /* HTMLDocumentFragment.m in Sources */,
62ECBF2E1C0B6B7900AF847B /* HTMLElement.m in Sources */,
62ECBF2F1C0B6B7900AF847B /* HTMLComment.m in Sources */,
62A6CDD220BC9A3D00351AAE /* HTMLAttributePolicy.m in Sources */,
62ECBF301C0B6B7900AF847B /* HTMLText.m in Sources */,
62ECBF311C0B6B7900AF847B /* HTMLTemplate.m in Sources */,
62ECBF321C0B6B7900AF847B /* HTMLNodeIterator.m in Sources */,
@@ -1852,14 +1765,13 @@
62ECBF361C0B6B7900AF847B /* HTMLKitDOMExceptions.m in Sources */,
62ECBF371C0B6B7900AF847B /* NSString+HTMLKit.m in Sources */,
62ECBF381C0B6B7900AF847B /* NSCharacterSet+HTMLKit.m in Sources */,
627E60AC20B9C58F00AB06E8 /* HTMLElementPolicy.m in Sources */,
62ECBF391C0B6B7900AF847B /* HTMLOrderedDictionary.m in Sources */,
62ECBF3A1C0B6B7900AF847B /* CSSSelectors.m in Sources */,
62ECBF3B1C0B6B7900AF847B /* CSSStructuralPseudoSelectors.m in Sources */,
62ECBF3C1C0B6B7900AF847B /* CSSInputStream.m in Sources */,
627E60CA20BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.m in Sources */,
62ECBF3D1C0B6B7900AF847B /* CSSSelectorParser.m in Sources */,
62ECBF3E1C0B6B7900AF847B /* CSSNthExpressionParser.m in Sources */,
625A67CD224AC62C00C6D57D /* NSString+Private.m in Sources */,
62ECBF3F1C0B6B7900AF847B /* CSSSelector.m in Sources */,
62ECBF401C0B6B7900AF847B /* CSSSelectorBlock.m in Sources */,
62ECBF411C0B6B7900AF847B /* CSSTypeSelector.m in Sources */,
@@ -1871,7 +1783,6 @@
62ECBF471C0B6B7A00AF847B /* CSSCompoundSelector.m in Sources */,
62567F521C0CB5750025D458 /* HTMLDOMTokenList.m in Sources */,
624C777E1DE9D05E00DD6DFA /* HTMLCharacterData.m in Sources */,
627E60C020BA015100AB06E8 /* HTMLSanitizingPolicy.m in Sources */,
626BE1E61DF3819600C49514 /* HTMLDOMUtils.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -1884,6 +1795,7 @@
620AB7B12087F18D00AFCCC7 /* CSSStructuralPseudoSelectors.m in Sources */,
62E0BA971E25456700E4D193 /* HTMLCharacterDataTests.m in Sources */,
6216ACFD1C28DCC80074CAB4 /* CSSExtensionSelectorsParsingTests.m in Sources */,
62C82E0D20FD2FFD008497A8 /* HTMLKitParserIssuesTests.m in Sources */,
62132E5A1C01F83200084175 /* CSSSelectorTest.m in Sources */,
6239755B1AC362CA007E26F1 /* HTMLKitTreeConstructionTests.m in Sources */,
62F658711BD83C8E0045F137 /* CSSNThExpressionSelectorTests.m in Sources */,
@@ -1918,8 +1830,6 @@
62857CB31D398992008DC254 /* HTMLDocumentFragment.m in Sources */,
62857CB61D398992008DC254 /* HTMLText.m in Sources */,
62857C7D1D398912008DC254 /* HTMLToken.m in Sources */,
62E2BC1420C0A93300979D71 /* HTMLTokenPolicy.m in Sources */,
627E60A420B9C55400AB06E8 /* HTMLSanitizer.m in Sources */,
62857CB41D398992008DC254 /* HTMLElement.m in Sources */,
62857CCB1D3989B8008DC254 /* CSSSelector.m in Sources */,
62857C8B1D39892D008DC254 /* HTMLParser.m in Sources */,
@@ -1934,10 +1844,10 @@
62857C811D398912008DC254 /* HTMLParseErrorToken.m in Sources */,
62857CD21D3989B8008DC254 /* CSSCombinatorSelector.m in Sources */,
62857CB91D398992008DC254 /* HTMLNodeIterator.m in Sources */,
625A67D5224ADC7700C6D57D /* HTMLQuircksMode.m in Sources */,
62857CCF1D3989B8008DC254 /* CSSPseudoClassSelector.m in Sources */,
62857C7A1D398912008DC254 /* HTMLInputStreamReader.m in Sources */,
62857CC11D39899C008DC254 /* NSCharacterSet+HTMLKit.m in Sources */,
62A6CDD520BC9A3D00351AAE /* HTMLAttributePolicy.m in Sources */,
62857CCD1D3989B8008DC254 /* CSSTypeSelector.m in Sources */,
62857C8E1D39892D008DC254 /* HTMLMarker.m in Sources */,
62857CB51D398992008DC254 /* HTMLComment.m in Sources */,
@@ -1947,14 +1857,13 @@
62857CC81D3989B8008DC254 /* CSSSelectorParser.m in Sources */,
62857CBA1D398992008DC254 /* HTMLTreeWalker.m in Sources */,
62857CE11D39A108008DC254 /* HTMLDocumentType.m in Sources */,
627E60AF20B9C58F00AB06E8 /* HTMLElementPolicy.m in Sources */,
62857CC71D3989AF008DC254 /* CSSStructuralPseudoSelectors.m in Sources */,
62857C8D1D39892D008DC254 /* HTMLListOfActiveFormattingElements.m in Sources */,
62857CB71D398992008DC254 /* HTMLTemplate.m in Sources */,
62857CBC1D398992008DC254 /* HTMLNodeFilter.m in Sources */,
627E60CD20BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.m in Sources */,
62857CC01D39899C008DC254 /* NSString+HTMLKit.m in Sources */,
62857CCA1D3989B8008DC254 /* CSSInputStream.m in Sources */,
625A67D0224AC62C00C6D57D /* NSString+Private.m in Sources */,
62857CCE1D3989B8008DC254 /* CSSAttributeSelector.m in Sources */,
62857CC31D3989A3008DC254 /* HTMLOrderedDictionary.m in Sources */,
62857CC91D3989B8008DC254 /* CSSNthExpressionParser.m in Sources */,
@@ -1966,7 +1875,6 @@
62857CB81D398992008DC254 /* HTMLDOMTokenList.m in Sources */,
62857C831D398912008DC254 /* HTMLEOFToken.m in Sources */,
624C77811DE9D05E00DD6DFA /* HTMLCharacterData.m in Sources */,
627E60C320BA015100AB06E8 /* HTMLSanitizingPolicy.m in Sources */,
626BE1E91DF3819600C49514 /* HTMLDOMUtils.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -1979,8 +1887,6 @@
62857D121D39A32A008DC254 /* HTMLDocumentFragment.m in Sources */,
62857D151D39A32A008DC254 /* HTMLText.m in Sources */,
62857D0B1D39A328008DC254 /* HTMLParser.m in Sources */,
62E2BC1320C0A93300979D71 /* HTMLTokenPolicy.m in Sources */,
627E60A320B9C55400AB06E8 /* HTMLSanitizer.m in Sources */,
62857D131D39A32A008DC254 /* HTMLElement.m in Sources */,
62857D251D39A334008DC254 /* CSSSelector.m in Sources */,
62857D021D39A324008DC254 /* HTMLTokenizer.m in Sources */,
@@ -1995,10 +1901,10 @@
62857D0F1D39A32A008DC254 /* HTMLNode.m in Sources */,
62857D2C1D39A334008DC254 /* CSSCombinatorSelector.m in Sources */,
62857D181D39A32A008DC254 /* HTMLNodeIterator.m in Sources */,
625A67D4224ADC7700C6D57D /* HTMLQuircksMode.m in Sources */,
62857D291D39A334008DC254 /* CSSPseudoClassSelector.m in Sources */,
62857D011D39A324008DC254 /* HTMLInputStreamReader.m in Sources */,
62857D1E1D39A334008DC254 /* NSCharacterSet+HTMLKit.m in Sources */,
62A6CDD420BC9A3D00351AAE /* HTMLAttributePolicy.m in Sources */,
62857D271D39A334008DC254 /* CSSTypeSelector.m in Sources */,
62857D0E1D39A328008DC254 /* HTMLMarker.m in Sources */,
62857D071D39A324008DC254 /* HTMLDOCTYPEToken.m in Sources */,
@@ -2008,14 +1914,13 @@
62857D0D1D39A328008DC254 /* HTMLListOfActiveFormattingElements.m in Sources */,
62857D221D39A334008DC254 /* CSSSelectorParser.m in Sources */,
62857D191D39A32A008DC254 /* HTMLTreeWalker.m in Sources */,
627E60AE20B9C58F00AB06E8 /* HTMLElementPolicy.m in Sources */,
62857D211D39A334008DC254 /* CSSStructuralPseudoSelectors.m in Sources */,
62857D091D39A324008DC254 /* HTMLTagToken.m in Sources */,
62857D161D39A32A008DC254 /* HTMLTemplate.m in Sources */,
62857D1B1D39A32A008DC254 /* HTMLNodeFilter.m in Sources */,
627E60CC20BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.m in Sources */,
62857D1D1D39A334008DC254 /* NSString+HTMLKit.m in Sources */,
62857D241D39A334008DC254 /* CSSInputStream.m in Sources */,
625A67CF224AC62C00C6D57D /* NSString+Private.m in Sources */,
62857D281D39A334008DC254 /* CSSAttributeSelector.m in Sources */,
62857D1F1D39A334008DC254 /* HTMLOrderedDictionary.m in Sources */,
62857D231D39A334008DC254 /* CSSNthExpressionParser.m in Sources */,
@@ -2027,7 +1932,6 @@
62857D171D39A32A008DC254 /* HTMLDOMTokenList.m in Sources */,
62857D0A1D39A324008DC254 /* HTMLEOFToken.m in Sources */,
624C77801DE9D05E00DD6DFA /* HTMLCharacterData.m in Sources */,
627E60C220BA015100AB06E8 /* HTMLSanitizingPolicy.m in Sources */,
626BE1E81DF3819600C49514 /* HTMLDOMUtils.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -2040,6 +1944,7 @@
620AB7B32087F18D00AFCCC7 /* CSSStructuralPseudoSelectors.m in Sources */,
62E0BA991E25456700E4D193 /* HTMLCharacterDataTests.m in Sources */,
62857D3B1D39A345008DC254 /* CSSSelectorTest.m in Sources */,
62C82E0F20FD2FFD008497A8 /* HTMLKitParserIssuesTests.m in Sources */,
62857D421D39A345008DC254 /* CSSCombinatorSelectorTests.m in Sources */,
62857D3C1D39A345008DC254 /* CSSSelectorParserTests.m in Sources */,
62857D301D39A339008DC254 /* HTMLKitTokenizerPerformance.m in Sources */,
@@ -2074,8 +1979,6 @@
62ECBF651C0B6D2A00AF847B /* HTMLTokenizer.m in Sources */,
62ECBF661C0B6D2A00AF847B /* HTMLTokenizerEntities.m in Sources */,
62ECBF671C0B6D2A00AF847B /* HTMLToken.m in Sources */,
62E2BC1220C0A93300979D71 /* HTMLTokenPolicy.m in Sources */,
627E60A220B9C55400AB06E8 /* HTMLSanitizer.m in Sources */,
62ECBF681C0B6D2A00AF847B /* HTMLCharacterToken.m in Sources */,
62ECBF691C0B6D2A00AF847B /* HTMLCommentToken.m in Sources */,
62ECBF6A1C0B6D2A00AF847B /* HTMLDOCTYPEToken.m in Sources */,
@@ -2090,10 +1993,10 @@
62ECBF721C0B6D2A00AF847B /* HTMLNode.m in Sources */,
62ECBF731C0B6D2A00AF847B /* HTMLDocument.m in Sources */,
62ECBF741C0B6D2A00AF847B /* HTMLDocumentType.m in Sources */,
625A67D3224ADC7700C6D57D /* HTMLQuircksMode.m in Sources */,
62ECBF751C0B6D2A00AF847B /* HTMLDocumentFragment.m in Sources */,
62ECBF761C0B6D2A00AF847B /* HTMLElement.m in Sources */,
62ECBF771C0B6D2A00AF847B /* HTMLComment.m in Sources */,
62A6CDD320BC9A3D00351AAE /* HTMLAttributePolicy.m in Sources */,
62ECBF781C0B6D2A00AF847B /* HTMLText.m in Sources */,
62ECBF791C0B6D2A00AF847B /* HTMLTemplate.m in Sources */,
62ECBF7A1C0B6D2A00AF847B /* HTMLNodeIterator.m in Sources */,
@@ -2103,14 +2006,13 @@
62ECBF7E1C0B6D2A00AF847B /* HTMLKitDOMExceptions.m in Sources */,
62ECBF7F1C0B6D2A00AF847B /* NSString+HTMLKit.m in Sources */,
62ECBF801C0B6D2A00AF847B /* NSCharacterSet+HTMLKit.m in Sources */,
627E60AD20B9C58F00AB06E8 /* HTMLElementPolicy.m in Sources */,
62ECBF811C0B6D2A00AF847B /* HTMLOrderedDictionary.m in Sources */,
62ECBF821C0B6D2A00AF847B /* CSSSelectors.m in Sources */,
62ECBF831C0B6D2A00AF847B /* CSSStructuralPseudoSelectors.m in Sources */,
62ECBF841C0B6D2A00AF847B /* CSSInputStream.m in Sources */,
627E60CB20BA02E900AB06E8 /* HTMLSanitizingPolicyBuilder.m in Sources */,
62ECBF851C0B6D2A00AF847B /* CSSSelectorParser.m in Sources */,
62ECBF861C0B6D2A00AF847B /* CSSNthExpressionParser.m in Sources */,
625A67CE224AC62C00C6D57D /* NSString+Private.m in Sources */,
62ECBF871C0B6D2A00AF847B /* CSSSelector.m in Sources */,
62ECBF881C0B6D2A00AF847B /* CSSSelectorBlock.m in Sources */,
62ECBF891C0B6D2A00AF847B /* CSSTypeSelector.m in Sources */,
@@ -2122,7 +2024,6 @@
62ECBF8F1C0B6D2A00AF847B /* CSSCompoundSelector.m in Sources */,
62567F531C0CB5750025D458 /* HTMLDOMTokenList.m in Sources */,
624C777F1DE9D05E00DD6DFA /* HTMLCharacterData.m in Sources */,
627E60C120BA015100AB06E8 /* HTMLSanitizingPolicy.m in Sources */,
626BE1E71DF3819600C49514 /* HTMLDOMUtils.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -2135,6 +2036,7 @@
620AB7B22087F18D00AFCCC7 /* CSSStructuralPseudoSelectors.m in Sources */,
62E0BA981E25456700E4D193 /* HTMLCharacterDataTests.m in Sources */,
6216ACFE1C28DCC80074CAB4 /* CSSExtensionSelectorsParsingTests.m in Sources */,
62C82E0E20FD2FFD008497A8 /* HTMLKitParserIssuesTests.m in Sources */,
62ECBFCA1C0B6E2E00AF847B /* HTML5LibTokenizerTest.m in Sources */,
62ECBFCB1C0B6E2E00AF847B /* HTMLKitTokenizerTests.m in Sources */,
62ECBFCC1C0B6E2E00AF847B /* HTMLKitTokenizerPerformance.m in Sources */,
+1 -1
View File
@@ -61,7 +61,7 @@
}
case CSSAttributeSelectorIncludes:
{
NSArray *components = [element[_name] componentsSeparatedByCharactersInSet:[NSCharacterSet HTMLWhitespaceCharacterSet]];
NSArray *components = [element[_name] componentsSeparatedByCharactersInSet:[NSCharacterSet htmlkit_HTMLWhitespaceCharacterSet]];
return [components containsObject:_value];
}
case CSSAttributeSelectorBegins:
+2 -2
View File
@@ -8,7 +8,7 @@
#import "CSSNthExpressionParser.h"
#import "CSSCodePoints.h"
#import "NSString+HTMLKit.h"
#import "NSString+Private.h"
#import "NSCharacterSet+HTMLKit.h"
@implementation CSSNthExpressionParser
@@ -26,7 +26,7 @@
return CSSNthExpressionEven;
}
NSCharacterSet *set = [[NSCharacterSet CSSNthExpressionCharacterSet] invertedSet];
NSCharacterSet *set = [[NSCharacterSet htmlkit_CSSNthExpressionCharacterSet] invertedSet];
if ([string rangeOfCharacterFromSet:set].location != NSNotFound) {
return CSSNthExpressionMake(0, 0);
}
+1 -1
View File
@@ -10,7 +10,7 @@
#import "CSSInputStream.h"
#import "CSSCodePoints.h"
#import "CSSSelectors.h"
#import "NSString+HTMLKit.h"
#import "NSString+Private.h"
#import "NSCharacterSet+HTMLKit.h"
#import "CSSNthExpressionParser.h"
#import "CSSCompoundSelector.h"
+1 -1
View File
@@ -9,7 +9,7 @@
#import "CSSStructuralPseudoSelectors.h"
#import "CSSSelectors.h"
#import "HTMLElement.h"
#import "NSString+HTMLKit.h"
#import "NSString+Private.h"
#pragma mark - Elements
+1 -1
View File
@@ -8,7 +8,7 @@
#import "CSSTypeSelector.h"
#import "HTMLElement.h"
#import "NSString+HTMLKit.h"
#import "NSString+Private.h"
@interface CSSTypeSelector ()
{
-25
View File
@@ -1,25 +0,0 @@
//
// HTMLAttributePolicy.h
// HTMLKit
//
// Created by Iska on 28.05.18.
// Copyright © 2018 BrainCookie. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef NSString * _Nullable (^ SanitizeAttrbiuteValueBlock) (NSString * _Nullable value, NSString * key);
@interface HTMLAttributePolicy : NSObject
+ (instancetype)identity;
+ (instancetype)rejectAll;
+ (instancetype)policyWithBlock:(SanitizeAttrbiuteValueBlock)block;
- (NSString *)sanitizeValue:(NSString *)value forKey:(NSString *)key;
@end
NS_ASSUME_NONNULL_END
-56
View File
@@ -1,56 +0,0 @@
//
// HTMLAttributePolicy.m
// HTMLKit
//
// Created by Iska on 28.05.18.
// Copyright © 2018 BrainCookie. All rights reserved.
//
#import "HTMLAttributePolicy.h"
@interface HTMLAttributePolicy()
{
SanitizeAttrbiuteValueBlock _block;
}
@end
@implementation HTMLAttributePolicy
+ (instancetype)identity
{
return [self policyWithBlock:^NSString * _Nullable (NSString * _Nullable value, NSString * _Nonnull key) {
return value;
}];
}
+ (instancetype)rejectAll
{
return [self policyWithBlock:^NSString * _Nullable (NSString * _Nullable value, NSString * _Nonnull key) {
return nil;
}];
}
+ (instancetype)policyWithBlock:(SanitizeAttrbiuteValueBlock)block
{
HTMLAttributePolicy *policy = [[HTMLAttributePolicy alloc] initWithBlock:block];
return policy;
}
- (instancetype)initWithBlock:(SanitizeAttrbiuteValueBlock)block
{
self = [super init];
if (self) {
_block = block;
}
return self;
}
- (NSString *)sanitizeValue:(NSString *)value forKey:(NSString *)key
{
if (_block) {
return _block(value, key);
}
return value;
}
@end
+4 -4
View File
@@ -36,7 +36,7 @@
- (BOOL)isWhitespaceToken
{
return [_characters isHTMLWhitespaceString];
return [_characters htmlkit_isHTMLWhitespaceString];
}
- (BOOL)isEmpty
@@ -46,7 +46,7 @@
- (void)retainLeadingWhitespace
{
NSUInteger index = _characters.leadingHTMLWhitespaceLength;
NSUInteger index = _characters.htmlkit_leadingHTMLWhitespaceLength;
if (index > 0) {
[_characters setString:[_characters substringToIndex:index]];
}
@@ -54,7 +54,7 @@
- (void)trimLeadingWhitespace
{
NSUInteger index = _characters.leadingHTMLWhitespaceLength;
NSUInteger index = _characters.htmlkit_leadingHTMLWhitespaceLength;
if (index > 0) {
[_characters setString:[_characters substringFromIndex:index]];
}
@@ -67,7 +67,7 @@
- (HTMLCharacterToken *)tokenBySplitingLeadingWhiteSpace
{
NSUInteger index = _characters.leadingHTMLWhitespaceLength;
NSUInteger index = _characters.htmlkit_leadingHTMLWhitespaceLength;
if (index > 0) {
NSString *leading = [_characters substringToIndex:index];
[_characters setString:[_characters substringFromIndex:index]];
+1 -1
View File
@@ -7,7 +7,7 @@
//
#import "HTMLDocumentType.h"
#import "NSString+HTMLKit.h"
#import "NSString+Private.h"
#import "HTMLNode+Private.h"
NS_INLINE BOOL nilOrEqual(id first, id second) {
+1 -1
View File
@@ -12,7 +12,7 @@
#import "HTMLText.h"
#import "HTMLDOMTokenList.h"
#import "HTMLOrderedDictionary.h"
#import "NSString+HTMLKit.h"
#import "NSString+Private.h"
#import "HTMLNode+Private.h"
@interface HTMLElement ()
-31
View File
@@ -1,31 +0,0 @@
//
// HTMLElementPolicy.h
// HTMLKit
//
// Created by Iska on 26.05.18.
// Copyright © 2018 BrainCookie. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "HTMLSanitizingPolicy.h"
#import "HTMLOrderedDictionary.h"
NS_ASSUME_NONNULL_BEGIN
typedef NSString * _Nullable (^ SanitizeElementNameBlock) (NSString *);
typedef HTMLOrderedDictionary * _Nullable (^ SanitizeElementAttributesBlock) (HTMLOrderedDictionary * _Nullable);
@interface HTMLElementPolicy : NSObject
+ (instancetype)identity;
+ (instancetype)rejectAll;
+ (instancetype)policyWithNameBlock:(SanitizeElementNameBlock)nameBlock;
+ (instancetype)policyWithNameBlock:(SanitizeElementNameBlock)nameBlock
attributesBlock:(nullable SanitizeElementAttributesBlock)attributesBlock;
- (NSString *)sanitizeName:(NSString *)name;
- (HTMLOrderedDictionary *)sanitzeAttributes:(HTMLOrderedDictionary *)attributes;
@end
NS_ASSUME_NONNULL_END
-73
View File
@@ -1,73 +0,0 @@
//
// HTMLElementPolicy.m
// HTMLKit
//
// Created by Iska on 26.05.18.
// Copyright © 2018 BrainCookie. All rights reserved.
//
#import "HTMLElementPolicy.h"
@interface HTMLElementPolicy()
{
SanitizeElementNameBlock _nameBlock;
SanitizeElementAttributesBlock _attributesBlock;
}
@end
@implementation HTMLElementPolicy
+ (instancetype)identity
{
return [self policyWithNameBlock:^NSString * _Nullable (NSString * _Nonnull name) {
return name;
}];
}
+ (instancetype)rejectAll
{
return [self policyWithNameBlock:^NSString *_Nullable (NSString * _Nonnull name) {
return nil;
}];
}
+ (instancetype)policyWithNameBlock:(NSString * _Nonnull (^)(NSString * _Nonnull))nameBlock
{
return [self policyWithNameBlock:nameBlock attributesBlock:nil];
}
+ (instancetype)policyWithNameBlock:(SanitizeElementNameBlock)nameBlock
attributesBlock:(SanitizeElementAttributesBlock)attributesBlock
{
HTMLElementPolicy *policy = [[HTMLElementPolicy alloc] initWithNameBlock:nameBlock attributesBlock:attributesBlock];
return policy;
}
- (instancetype)initWithNameBlock:(SanitizeElementNameBlock)nameBlock
attributesBlock:(SanitizeElementAttributesBlock)attributesBlock
{
self = [super init];
if (self) {
_nameBlock = nameBlock;
_attributesBlock = attributesBlock;
}
return self;
}
- (NSString *)sanitizeName:(NSString *)name
{
if (_nameBlock) {
return _nameBlock(name);
}
return name;
}
- (HTMLOrderedDictionary *)sanitzeAttributes:(HTMLOrderedDictionary *)attributes
{
if (_attributesBlock) {
return _attributesBlock(attributes);
}
return attributes;
}
@end
+1 -1
View File
@@ -170,7 +170,7 @@
- (BOOL)consumeHexNumber:(unsigned long long *)result
{
NSCharacterSet *set = [NSCharacterSet HTMLHexNumberCharacterSet];
NSCharacterSet *set = [NSCharacterSet htmlkit_HTMLHexNumberCharacterSet];
NSString *string = nil;
BOOL success = [_scanner scanCharactersFromSet:set intoString:&string];
+1 -1
View File
@@ -17,7 +17,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>2.1.4</string>
<string>3.0.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
+4 -4
View File
@@ -1142,7 +1142,7 @@
if (charactes.length > 0) {
[self reconstructActiveFormattingElements];
[self insertCharacters:charactes];
if (!charactes.isHTMLWhitespaceString) {
if (!charactes.htmlkit_isHTMLWhitespaceString) {
_framesetOkFlag = NO;
}
}
@@ -2313,7 +2313,7 @@
[characters enumerateSubstringsInRange:NSMakeRange(0, characters.length)
options:NSStringEnumerationByComposedCharacterSequences
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
if (substring.isHTMLWhitespaceString) {
if (substring.htmlkit_isHTMLWhitespaceString) {
[self insertCharacters:substring];
} else {
[self emitParseError:@"Unexpected Character (%@) in <frameset>", substring];
@@ -2381,7 +2381,7 @@
[characters enumerateSubstringsInRange:NSMakeRange(0, characters.length)
options:NSStringEnumerationByComposedCharacterSequences
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
if (substring.isHTMLWhitespaceString) {
if (substring.htmlkit_isHTMLWhitespaceString) {
[self insertCharacters:substring];
} else {
[self emitParseError:@"Unexpected Character (%@) after <frameset>", substring];
@@ -2515,7 +2515,7 @@
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
if ([substring isEqualToString:@"\uFFFD"]) {
[self emitParseError:@"Unexpected Character (0x0000) in foreign content"];
} else if (!substring.isHTMLWhitespaceString) {
} else if (!substring.htmlkit_isHTMLWhitespaceString) {
_framesetOkFlag = NO;
}
[self insertCharacters:substring];
+21
View File
@@ -0,0 +1,21 @@
//
// HTMLQuircksMode.m
// HTMLKit
//
// Created by Iska on 26.03.19.
// Copyright © 2019 BrainCookie. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "HTMLQuirksMode.h"
#import "NSString+Private.h"
BOOL QuirksModePrefixMatch(NSString *publicIdentifier)
{
for (int i = 0; i < sizeof(HTMLQuirksModePrefixes) / sizeof(HTMLQuirksModePrefixes[0]); i++) {
if ([publicIdentifier hasPrefixIgnoringCase:HTMLQuirksModePrefixes[i]]) {
return YES;
}
}
return NO;
}
-21
View File
@@ -1,21 +0,0 @@
//
// HTMLSanitizer.h
// HTMLKit
//
// Created by Iska on 26.05.18.
// Copyright © 2018 BrainCookie. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "HTMLSanitizingPolicyBuilder.h"
#import "HTMLSanitizingPolicy.h"
NS_ASSUME_NONNULL_BEGIN
@interface HTMLSanitizer : NSObject
+ (instancetype)sanitizerWithPolicy:(void (^)(HTMLSanitizingPolicyBuilder *))block;
@end
NS_ASSUME_NONNULL_END
-45
View File
@@ -1,45 +0,0 @@
//
// HTMLSanitizer.m
// HTMLKit
//
// Created by Iska on 26.05.18.
// Copyright © 2018 BrainCookie. All rights reserved.
//
#import "HTMLSanitizer.h"
#import "HTMLTokenizer.h"
#import "HTMLTokens.h"
@interface HTMLSanitizer()
{
HTMLTokenizer *_tokenizer;
}
@end
@implementation HTMLSanitizer
+ (instancetype)sanitizerWithPolicy:(void (^)(HTMLSanitizingPolicyBuilder *))block
{
HTMLSanitizingPolicyBuilder *builder = [HTMLSanitizingPolicyBuilder new];
block(builder);
return nil; //[[HTMLSanitizingPolicy alloc] initWithBuilder:builder];
}
- (instancetype)initWithString:(NSString *)string
{
self = [super init];
if (self) {
_tokenizer = [[HTMLTokenizer alloc] initWithString:string ?: @""];
}
return self;
}
- (void)sanitize
{
// for (HTMLToken *token in _tokenizer) {
//
// }
}
@end
-20
View File
@@ -1,20 +0,0 @@
//
// HTMLSanitizingPolicy.h
// HTMLKit
//
// Created by Iska on 26.05.18.
// Copyright © 2018 BrainCookie. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface HTMLSanitizingPolicy : NSObject
- (HTMLSanitizingPolicy *)combineWith:(nullable HTMLSanitizingPolicy *)other;
@end
NS_ASSUME_NONNULL_END
-36
View File
@@ -1,36 +0,0 @@
//
// HTMLSanitizingPolicy.m
// HTMLKit
//
// Created by Iska on 26.05.18.
// Copyright © 2018 BrainCookie. All rights reserved.
//
#import "HTMLSanitizingPolicy.h"
@interface HTMLSanitizingPolicy()
{
NSMutableArray *_policies;
}
@end
@implementation HTMLSanitizingPolicy
- (instancetype)init
{
self = [super init];
if (self) {
_policies = [NSMutableArray new];
}
return self;
}
- (HTMLSanitizingPolicy *)combineWith:(HTMLSanitizingPolicy *)other
{
if (other) {
[_policies addObject:other];
}
return self;
}
@end
-39
View File
@@ -1,39 +0,0 @@
//
// HTMLSanitizingPolicyBuilder.h
// HTMLKit
//
// Created by Iska on 26.05.18.
// Copyright © 2018 BrainCookie. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "HTMLElementPolicy.h"
#import "HTMLTokenPolicy.h"
#import "HTMLAttributePolicy.h"
NS_ASSUME_NONNULL_BEGIN
@interface HTMLSanitizingPolicyBuilder : NSObject
- (HTMLSanitizingPolicyBuilder *)allowElements:(NSArray<NSString *> *)elementNames;
- (HTMLSanitizingPolicyBuilder *)disallowElements:(NSArray<NSString *> *)elementNames;
- (HTMLSanitizingPolicyBuilder *)allowPolicy:(HTMLElementPolicy *)policy onElements:(NSArray<NSString *> *)elementNames;
- (HTMLSanitizingPolicyBuilder *)allowCommonInlineFormattingElements;
- (HTMLSanitizingPolicyBuilder *)allowCommonBlockElements;
- (HTMLSanitizingPolicyBuilder *)allowTextInElements:(NSArray<NSString *> *)elementNames;
- (HTMLSanitizingPolicyBuilder *)disallowTextInElements:(NSArray<NSString *> *)elementNames;
//- (HTMLSanitizingPolicyBuilder *)allowAttributes:(NSArray<NSString *> *)attributeName
// onElements:(NSArray<NSString *> *)elementNames;
//- (HTMLSanitizingPolicyBuilder *)disallowAttributes:(NSArray<NSString *> *)attributeName
// onElements:(NSArray<NSString *> *)elementNames;
//
//- (HTMLSanitizingPolicyBuilder *)allowAttributePolicy:(HTMLAttributePolicy *)policy
// onElements:(NSArray<NSString *> *)elementNames;
//- (HTMLSanitizingPolicyBuilder *)disallowAttributePolicy:(HTMLAttributePolicy *)policy
// onElements:(NSArray<NSString *> *)elementNames;
@end
NS_ASSUME_NONNULL_END
-94
View File
@@ -1,94 +0,0 @@
//
// HTMLSanitizingPolicyBuilder.m
// HTMLKit
//
// Created by Iska on 26.05.18.
// Copyright © 2018 BrainCookie. All rights reserved.
//
#import "HTMLSanitizingPolicyBuilder.h"
@interface HTMLSanitizingPolicyBuilder()
{
NSMutableDictionary<NSString *, NSMutableArray<HTMLElementPolicy *> *> * elementPolicies;
NSMutableDictionary<NSString *, HTMLAttributePolicy *> * attributePolicies;
NSMutableDictionary<NSString *, NSNumber *> * textContainers;
}
@end
@implementation HTMLSanitizingPolicyBuilder
- (HTMLSanitizingPolicyBuilder *)allowElements:(NSArray<NSString *> *)elementNames
{
return [self allowPolicy:HTMLElementPolicy.identity onElements:elementNames];
}
- (HTMLSanitizingPolicyBuilder *)disallowElements:(NSArray<NSString *> *)elementNames
{
return [self allowPolicy:HTMLElementPolicy.rejectAll onElements:elementNames];
}
- (HTMLSanitizingPolicyBuilder *)allowPolicy:(HTMLElementPolicy *)policy onElements:(NSArray<NSString *> *)elementNames
{
for (NSString *name in elementNames) {
NSMutableArray<HTMLElementPolicy *> *list = elementPolicies[name];
if (list == nil) {
list = [NSMutableArray new];
}
[list addObject:policy];
elementPolicies[name] = list;
}
return self;
}
- (HTMLSanitizingPolicyBuilder *)allowCommonInlineFormattingElements
{
return [self allowElements:@[@"b", @"i", @"font", @"s", @"u", @"o", @"sup", @"sub", @"ins", @"del",
@"strong", @"strike", @"tt", @"code", @"big", @"small", @"br", @"span", @"em"]];
}
- (HTMLSanitizingPolicyBuilder *)allowCommonBlockElements
{
return [self allowElements:@[@"p", @"div", @"h1", @"h2", @"h3", @"h4", @"h5", @"h6", @"ul", @"ol", @"li",
@"blockquote"]];
}
- (HTMLSanitizingPolicyBuilder *)allowTextInElements:(NSArray<NSString *> *)elementNames;
{
for (NSString *name in elementNames) {
textContainers[name] = @YES;
}
return self;
}
- (HTMLSanitizingPolicyBuilder *)disallowTextInElements:(NSArray<NSString *> *)elementNames
{
for (NSString *name in elementNames) {
textContainers[name] = @NO;
}
return self;
}
//- (HTMLSanitizingPolicyBuilder *)allowAttributes:(NSArray<NSString *> *)attributeNames
// onElements:(NSArray<NSString *> *)elementNames
//{
// for (NSString *attribute in attributeNames) {
// [self allowAttributePolicy:HTMLAttributePolicy.identity onElements:elementNames];
// }
// return self;
//}
//
//- (HTMLSanitizingPolicyBuilder *)disallowAttributes:(NSArray<NSString *> *)attributeName
// onElements:(NSArray<NSString *> *)elementNames;
//
//- (HTMLSanitizingPolicyBuilder *)allowAttributePolicy:(HTMLAttributePolicy *)policy onElements:(NSArray<NSString *> *)elementNames
//{
// return self;
//}
//
//- (HTMLSanitizingPolicyBuilder *)disallowAttributePolicy:(HTMLAttributePolicy *)policy onElements:(NSArray<NSString *> *)elementNames
//{
// return self;
//}
@end
+1 -1
View File
@@ -8,7 +8,7 @@
#import "HTMLText.h"
#import "HTMLElement.h"
#import "NSString+HTMLKit.h"
#import "NSString+Private.h"
#import "HTMLCharacterData+Private.h"
#import "HTMLKitDOMExceptions.h"
#import "HTMLDocument+Private.h"
-22
View File
@@ -1,22 +0,0 @@
//
// HTMLTokenPolicy.h
// HTMLKit
//
// Created by Iska on 01.06.18.
// Copyright © 2018 BrainCookie. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "HTMLTokens.h"
NS_ASSUME_NONNULL_BEGIN
@interface HTMLTokenPolicy : NSObject
+ (instancetype)policy:(HTMLToken * _Nullable (^)(HTMLToken *))block;
- (nullable HTMLToken *)apply:(HTMLToken *)token;
@end
NS_ASSUME_NONNULL_END
-38
View File
@@ -1,38 +0,0 @@
//
// HTMLTokenPolicy.m
// HTMLKit
//
// Created by Iska on 01.06.18.
// Copyright © 2018 BrainCookie. All rights reserved.
//
#import "HTMLTokenPolicy.h"
@interface HTMLTokenPolicy()
{
HTMLToken * (^ _policyBlock)(HTMLToken *);
}
@end
@implementation HTMLTokenPolicy
+ (instancetype)policy:(HTMLToken * _Nullable (^)(HTMLToken * _Nonnull))block
{
return [[HTMLTokenPolicy alloc] initWithBlock:block];
}
- (instancetype)initWithBlock:(HTMLToken * _Nullable (^)(HTMLToken * _Nonnull))block
{
self = [super init];
if (self) {
_policyBlock = block;
}
return self;
}
- (HTMLToken *)apply:(HTMLToken *)token
{
return _policyBlock(token);
}
@end
+3 -3
View File
@@ -10,7 +10,7 @@
@implementation NSCharacterSet (HTMLKit)
+ (instancetype)HTMLWhitespaceCharacterSet
+ (instancetype)htmlkit_HTMLWhitespaceCharacterSet
{
static NSCharacterSet *set = nil;
static dispatch_once_t onceToken;
@@ -20,7 +20,7 @@
return set;
}
+ (instancetype)HTMLHexNumberCharacterSet
+ (instancetype)htmlkit_HTMLHexNumberCharacterSet
{
static NSCharacterSet *set = nil;
static dispatch_once_t onceToken;
@@ -30,7 +30,7 @@
return set;
}
+ (instancetype)CSSNthExpressionCharacterSet
+ (instancetype)htmlkit_CSSNthExpressionCharacterSet
{
static NSCharacterSet *set = nil;
static dispatch_once_t onceToken;
+3 -39
View File
@@ -15,37 +15,12 @@ NS_INLINE BOOL isHtmlWhitespaceChar(unichar c)
@implementation NSString (HTMLKit)
- (BOOL)isEqualToStringIgnoringCase:(NSString *)aString
- (BOOL)htmlkit_isHTMLWhitespaceString
{
return [self caseInsensitiveCompare:aString] == NSOrderedSame;
return self.htmlkit_leadingHTMLWhitespaceLength == self.length;
}
- (BOOL)isEqualToAny:(NSString *)first, ... NS_REQUIRES_NIL_TERMINATION
{
va_list list;
va_start(list, first);
for (NSString *next = first; next != nil; next = va_arg(list, NSString *)) {
if ([self isEqualToString:next]) {
return YES;
}
}
va_end(list);
return NO;
}
- (BOOL)hasPrefixIgnoringCase:(NSString *)aString
{
NSRange reange = [self rangeOfString:aString
options:NSAnchoredSearch|NSCaseInsensitiveSearch];
return reange.location != NSNotFound;
}
- (BOOL)isHTMLWhitespaceString
{
return self.leadingHTMLWhitespaceLength == self.length;
}
- (NSUInteger)leadingHTMLWhitespaceLength
- (NSUInteger)htmlkit_leadingHTMLWhitespaceLength
{
size_t idx = 0;
NSUInteger length = self.length;
@@ -58,15 +33,4 @@ NS_INLINE BOOL isHtmlWhitespaceChar(unichar c)
return idx;
}
- (NSString *)stringByEscapingForHTML
{
NSMutableString *escaped = [self mutableCopy];
[escaped replaceOccurrencesOfString:@"&" withString:@"&amp;" options:0 range:NSMakeRange(0, escaped.length)];
[escaped replaceOccurrencesOfString:@"0x00A0" withString:@"&nbsp;" options:0 range:NSMakeRange(0, escaped.length)];
[escaped replaceOccurrencesOfString:@"\"" withString:@"&quot;" options:0 range:NSMakeRange(0, escaped.length)];
[escaped replaceOccurrencesOfString:@"<" withString:@"&lt;" options:0 range:NSMakeRange(0, escaped.length)];
[escaped replaceOccurrencesOfString:@">" withString:@"&gt;" options:0 range:NSMakeRange(0, escaped.length)];
return escaped;
}
@end
+38
View File
@@ -0,0 +1,38 @@
//
// NSString+Private.m
// HTMLKit
//
// Created by Iska on 26.03.19.
// Copyright © 2019 BrainCookie. All rights reserved.
//
#import "NSString+Private.h"
@implementation NSString (Private)
- (BOOL)isEqualToStringIgnoringCase:(NSString *)aString
{
return [self caseInsensitiveCompare:aString] == NSOrderedSame;
}
- (BOOL)isEqualToAny:(NSString *)first, ... NS_REQUIRES_NIL_TERMINATION
{
va_list list;
va_start(list, first);
for (NSString *next = first; next != nil; next = va_arg(list, NSString *)) {
if ([self isEqualToString:next]) {
return YES;
}
}
va_end(list);
return NO;
}
- (BOOL)hasPrefixIgnoringCase:(NSString *)aString
{
NSRange reange = [self rangeOfString:aString
options:NSAnchoredSearch|NSCaseInsensitiveSearch];
return reange.location != NSNotFound;
}
@end
+4
View File
@@ -6,6 +6,10 @@
// Copyright (c) 2014 BrainCookie. All rights reserved.
//
///------------------------------------------------------
/// HTMLKit private header
///------------------------------------------------------
#import <Foundation/Foundation.h>
#import "HTMLToken.h"
+4
View File
@@ -6,6 +6,10 @@
// Copyright (c) 2014 BrainCookie. All rights reserved.
//
///------------------------------------------------------
/// HTMLKit private header
///------------------------------------------------------
#import <Foundation/Foundation.h>
#import "HTMLToken.h"
+4
View File
@@ -6,6 +6,10 @@
// Copyright (c) 2014 BrainCookie. All rights reserved.
//
///------------------------------------------------------
/// HTMLKit private header
///------------------------------------------------------
#import <Foundation/Foundation.h>
#import "HTMLToken.h"
+4
View File
@@ -6,6 +6,10 @@
// Copyright (c) 2015 BrainCookie. All rights reserved.
//
///------------------------------------------------------
/// HTMLKit private header
///------------------------------------------------------
#import "HTMLToken.h"
/**
+1 -1
View File
@@ -12,7 +12,7 @@
#import "HTMLElement.h"
#import "HTMLNamespaces.h"
#import "NSString+HTMLKit.h"
#import "NSString+Private.h"
NS_INLINE BOOL IsNodeMathMLTextIntegrationPoint(HTMLElement *node)
{
-2
View File
@@ -16,8 +16,6 @@ extern const unsigned char HTMLKitVersionString[];
#import "HTMLDOM.h"
#import "HTMLParser.h"
#import "HTMLSanitizer.h"
#import "HTMLKitErrorDomain.h"
#import "HTMLOrderedDictionary.h"
+4
View File
@@ -6,6 +6,10 @@
// Copyright (c) 2014 BrainCookie. All rights reserved.
//
///------------------------------------------------------
/// HTMLKit private header
///------------------------------------------------------
#import <Foundation/Foundation.h>
#import "HTMLToken.h"
+1 -11
View File
@@ -6,8 +6,6 @@
// Copyright (c) 2015 BrainCookie. All rights reserved.
//
#import "NSString+HTMLKit.h"
/**
HTML quirks modes
https://html.spec.whatwg.org/multipage/infrastructure.html#quirks-mode
@@ -82,12 +80,4 @@ static NSString * HTMLQuirksModePrefixes[] = {
#undef QUIRKS_ENTRY
};
NS_INLINE BOOL QuirksModePrefixMatch(NSString *publicIdentifier)
{
for (int i = 0; i < sizeof(HTMLQuirksModePrefixes) / sizeof(HTMLQuirksModePrefixes[0]); i++) {
if ([publicIdentifier hasPrefixIgnoringCase:HTMLQuirksModePrefixes[i]]) {
return YES;
}
}
return NO;
}
extern BOOL QuirksModePrefixMatch(NSString *publicIdentifier);
+4
View File
@@ -6,6 +6,10 @@
// Copyright (c) 2014 BrainCookie. All rights reserved.
//
///------------------------------------------------------
/// HTMLKit private header
///------------------------------------------------------
#import <Foundation/Foundation.h>
#import "HTMLToken.h"
#import "HTMLOrderedDictionary.h"
+4
View File
@@ -6,6 +6,10 @@
// Copyright (c) 2014 BrainCookie. All rights reserved.
//
///------------------------------------------------------
/// HTMLKit private header
///------------------------------------------------------
#import <Foundation/Foundation.h>
@class HTMLDOCTYPEToken;
+4
View File
@@ -6,6 +6,10 @@
// Copyright (c) 2014 BrainCookie. All rights reserved.
//
///------------------------------------------------------
/// HTMLKit private header
///------------------------------------------------------
#import "HTMLToken.h"
#import "HTMLCharacterToken.h"
#import "HTMLCommentToken.h"
+4 -3
View File
@@ -19,17 +19,18 @@ NS_ASSUME_NONNULL_BEGIN
A character set for HTML whitespace characters: CHARACTER TABULATION U+0009, LINE FEED U+000A, FORM FEED U+000C,
CARRIAGE RETURN U+000D, and SPACE U+0020.
*/
+ (instancetype)HTMLWhitespaceCharacterSet;
+ (instancetype)htmlkit_HTMLWhitespaceCharacterSet;
/**
A character set for HTML HEX-Number characters: The digits 0-9, latin small letters a-f, and latin capital letters A-F.
*/
+ (instancetype)HTMLHexNumberCharacterSet;
+ (instancetype)htmlkit_HTMLHexNumberCharacterSet;
/**
A character set for CSS Nth-Expression: The digits 0-9, space, latin small n, latin capital N, plus sing and minus sign.
*/
+ (instancetype)CSSNthExpressionCharacterSet;
+ (instancetype)htmlkit_CSSNthExpressionCharacterSet;
@end
+2 -30
View File
@@ -15,45 +15,17 @@ NS_ASSUME_NONNULL_BEGIN
*/
@interface NSString (HTMLKit)
/**
Checks whether this string is equal to another ignoring the case.
@return `YES` if the two string are equal ignroing the case, `NO` otherwise.
*/
- (BOOL)isEqualToStringIgnoringCase:(NSString *)aString;
/**
Checks whether this string is equal to any of the given strings.
@return `YES` if there is an equal string, `NO` otherwise.
*/
- (BOOL)isEqualToAny:(NSString *)first, ... NS_REQUIRES_NIL_TERMINATION;
/**
Checks whether this string has a prefix ignoring the case.
@return `YES` if this string has a given prefix ignroing the case, `NO` otherwise.
*/
- (BOOL)hasPrefixIgnoringCase:(NSString *)aString;
/**
Checks whether this string is a HTML whitespace string.
@return `YES` if this string is a HTML whitespace string, `NO` otherwise.
*/
- (BOOL)isHTMLWhitespaceString;
- (BOOL)htmlkit_isHTMLWhitespaceString;
/**
@return The length of the leading HTML whitespace characters in this string.
*/
- (NSUInteger)leadingHTMLWhitespaceLength;
/**
Escapes this string as specified in `https://html.spec.whatwg.org/multipage/parsing.html#escapingString`
@return A copy of this string by HTML-escaping this stirng.
*/
- (NSString *)stringByEscapingForHTML;
- (NSUInteger)htmlkit_leadingHTMLWhitespaceLength;
@end
+41
View File
@@ -0,0 +1,41 @@
//
// NSString+Private.h
// HTMLKit
//
// Created by Iska on 26.03.19.
// Copyright © 2019 BrainCookie. All rights reserved.
//
///------------------------------------------------------
/// HTMLKit private header
///------------------------------------------------------
#import <Foundation/Foundation.h>
/**
NSStirng category for common helper methods.
*/
@interface NSString (Private)
/**
Checks whether this string is equal to another ignoring the case.
@return `YES` if the two string are equal ignroing the case, `NO` otherwise.
*/
- (BOOL)isEqualToStringIgnoringCase:(NSString *)aString;
/**
Checks whether this string is equal to any of the given strings.
@return `YES` if there is an equal string, `NO` otherwise.
*/
- (BOOL)isEqualToAny:(NSString *)first, ... NS_REQUIRES_NIL_TERMINATION;
/**
Checks whether this string has a prefix ignoring the case.
@return `YES` if this string has a given prefix ignroing the case, `NO` otherwise.
*/
- (BOOL)hasPrefixIgnoringCase:(NSString *)aString;
@end
+1
View File
@@ -34,5 +34,6 @@ module HTMLKit {
header "HTMLParser+Private.h"
header "HTMLNodeTraversal.h"
header "HTMLDOMUtils.h"
header "NSString+Private.h"
}
}
@@ -0,0 +1,43 @@
//
// HTMLKitParserTests.m
// HTMLKit
//
// Created by Iska on 16.07.18.
// Copyright © 2018 BrainCookie. All rights reserved.
//
#import <XCTest/XCTest.h>
#import "HTMLDOM.h"
@interface HTMLKitParserIssuesTests : XCTestCase
@end
@implementation HTMLKitParserIssuesTests
#pragma mark - Bug Fixes
- (void)testBugFix_Issue_30 {
NSString *html =
@"<body>"
" <svg id='draw_area' width='600' height='800' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1'>"
" <image id='overlay_img' xlink:href='foo.png' width='600' height='800'/>"
" </svg>"
"</body>";
HTMLDocument* document = [HTMLDocument documentWithString:html];
HTMLElement *svg = [document querySelector:@"#draw_area"];
XCTAssertNil(svg.attributes[@"xlink"]);
XCTAssertEqualObjects(svg.attributes[@"xmlns"], @"http://www.w3.org/2000/svg");
XCTAssertEqualObjects(svg.attributes[@"xmlns:xlink"], @"http://www.w3.org/1999/xlink");
HTMLElement *image = [document querySelector:@"#overlay_img"];
XCTAssertNil(image.attributes[@"xlink"]);
XCTAssertNil(image.attributes[@"href"]);
XCTAssertEqualObjects(image.attributes[@"xlink:href"], @"foo.png");
XCTAssertEqualObjects(image.outerHTML, @"<image id=\"overlay_img\" xlink:href=\"foo.png\" width=\"600\" height=\"800\"></image>");
}
@end
+20 -36
View File
@@ -7,8 +7,8 @@
//
#import <XCTest/XCTest.h>
#import "NSString+Private.h"
#import "NSString+HTMLKit.h"
#import "HTMLDOM.h"
@interface HTMLKitStringCategoryTests : XCTestCase
@@ -51,49 +51,33 @@
- (void)testIsHTMLWhitespaceString
{
XCTAssertTrue([@" " isHTMLWhitespaceString]);
XCTAssertTrue([@"\t" isHTMLWhitespaceString]);
XCTAssertTrue([@"\n" isHTMLWhitespaceString]);
XCTAssertTrue([@"\f" isHTMLWhitespaceString]);
XCTAssertTrue([@"\r" isHTMLWhitespaceString]);
XCTAssertTrue([@" \t\n\f\r" isHTMLWhitespaceString]);
XCTAssertTrue([@"\t\n\f\r " isHTMLWhitespaceString]);
XCTAssertTrue([@" \t \n \f \r" isHTMLWhitespaceString]);
XCTAssertFalse([@"html kit" isHTMLWhitespaceString]);
XCTAssertTrue([@" " htmlkit_isHTMLWhitespaceString]);
XCTAssertTrue([@"\t" htmlkit_isHTMLWhitespaceString]);
XCTAssertTrue([@"\n" htmlkit_isHTMLWhitespaceString]);
XCTAssertTrue([@"\f" htmlkit_isHTMLWhitespaceString]);
XCTAssertTrue([@"\r" htmlkit_isHTMLWhitespaceString]);
XCTAssertTrue([@" \t\n\f\r" htmlkit_isHTMLWhitespaceString]);
XCTAssertTrue([@"\t\n\f\r " htmlkit_isHTMLWhitespaceString]);
XCTAssertTrue([@" \t \n \f \r" htmlkit_isHTMLWhitespaceString]);
XCTAssertFalse([@"html kit" htmlkit_isHTMLWhitespaceString]);
}
- (void)testLeadingWhitespaceLength
{
XCTAssertEqual([@"" leadingHTMLWhitespaceLength], 0);
XCTAssertEqual([@"\0" leadingHTMLWhitespaceLength], 0);
XCTAssertEqual([@"" htmlkit_leadingHTMLWhitespaceLength], 0);
XCTAssertEqual([@"\0" htmlkit_leadingHTMLWhitespaceLength], 0);
XCTAssertEqual([@" " leadingHTMLWhitespaceLength], 1);
XCTAssertEqual([@"\0 " leadingHTMLWhitespaceLength], 0);
XCTAssertEqual([@" " htmlkit_leadingHTMLWhitespaceLength], 1);
XCTAssertEqual([@"\0 " htmlkit_leadingHTMLWhitespaceLength], 0);
XCTAssertEqual([@" " leadingHTMLWhitespaceLength], 2);
XCTAssertEqual([@" \0 " leadingHTMLWhitespaceLength], 1);
XCTAssertEqual([@" " htmlkit_leadingHTMLWhitespaceLength], 2);
XCTAssertEqual([@" \0 " htmlkit_leadingHTMLWhitespaceLength], 1);
XCTAssertEqual([@"\t\r\n\f" leadingHTMLWhitespaceLength], 4);
XCTAssertEqual([@"\t\r\n\0\f" leadingHTMLWhitespaceLength], 3);
XCTAssertEqual([@"\t\r\n\f" htmlkit_leadingHTMLWhitespaceLength], 4);
XCTAssertEqual([@"\t\r\n\0\f" htmlkit_leadingHTMLWhitespaceLength], 3);
XCTAssertEqual([@"\t\r\n\f " leadingHTMLWhitespaceLength], 5);
XCTAssertEqual([@"\t\r\n\f\0 " leadingHTMLWhitespaceLength], 4);
}
- (void)testStringByEscapingForHTML
{
XCTAssertEqualObjects(@"".stringByEscapingForHTML, @"");
XCTAssertEqualObjects(@"&".stringByEscapingForHTML, @"&amp;");
XCTAssertEqualObjects(@"0x00A0".stringByEscapingForHTML, @"&nbsp;");
XCTAssertEqualObjects(@"\"".stringByEscapingForHTML, @"&quot;");
XCTAssertEqualObjects(@"<".stringByEscapingForHTML, @"&lt;");
XCTAssertEqualObjects(@">".stringByEscapingForHTML, @"&gt;");
XCTAssertEqualObjects(@"&0x00A0\"<>".stringByEscapingForHTML, @"&amp;&nbsp;&quot;&lt;&gt;");
NSString *input = @"This is an <b>email</b>: John Do <john@do.com>";
NSString *escaped = input.stringByEscapingForHTML;
XCTAssertNotEqual(input, escaped);
XCTAssertEqualObjects(escaped, @"This is an &lt;b&gt;email&lt;/b&gt;: John Do &lt;john@do.com&gt;");
XCTAssertEqual([@"\t\r\n\f " htmlkit_leadingHTMLWhitespaceLength], 5);
XCTAssertEqual([@"\t\r\n\f\0 " htmlkit_leadingHTMLWhitespaceLength], 4);
}
@end