diff --git a/HTMLKit.xcodeproj/project.pbxproj b/HTMLKit.xcodeproj/project.pbxproj index 9a4ad39..9c96abd 100644 --- a/HTMLKit.xcodeproj/project.pbxproj +++ b/HTMLKit.xcodeproj/project.pbxproj @@ -10,6 +10,9 @@ 6234584E1A9D2FA4009BD491 /* HTMLNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 6234584C1A9D2FA4009BD491 /* HTMLNode.h */; }; 6234584F1A9D2FA4009BD491 /* HTMLNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 6234584D1A9D2FA4009BD491 /* HTMLNode.m */; }; 623458501A9D2FA4009BD491 /* HTMLNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 6234584D1A9D2FA4009BD491 /* HTMLNode.m */; }; + 623857961A9E8606003A45D9 /* HTMLDocumentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 623857941A9E8606003A45D9 /* HTMLDocumentType.h */; }; + 623857971A9E8606003A45D9 /* HTMLDocumentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 623857951A9E8606003A45D9 /* HTMLDocumentType.m */; }; + 623857981A9E8606003A45D9 /* HTMLDocumentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 623857951A9E8606003A45D9 /* HTMLDocumentType.m */; }; 624493A619CCC54100BCDDF4 /* HTMLTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 624493A419CCC54100BCDDF4 /* HTMLTokenizer.h */; }; 624493A719CCC54100BCDDF4 /* HTMLTokenizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 624493A519CCC54100BCDDF4 /* HTMLTokenizer.m */; }; 624493A819CCC54100BCDDF4 /* HTMLTokenizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 624493A519CCC54100BCDDF4 /* HTMLTokenizer.m */; }; @@ -104,6 +107,8 @@ 6223211D1A969B9300BACED5 /* HTMLElementTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLElementTypes.h; sourceTree = ""; }; 6234584C1A9D2FA4009BD491 /* HTMLNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLNode.h; sourceTree = ""; }; 6234584D1A9D2FA4009BD491 /* HTMLNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLNode.m; sourceTree = ""; }; + 623857941A9E8606003A45D9 /* HTMLDocumentType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLDocumentType.h; sourceTree = ""; }; + 623857951A9E8606003A45D9 /* HTMLDocumentType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLDocumentType.m; sourceTree = ""; }; 624493A419CCC54100BCDDF4 /* HTMLTokenizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLTokenizer.h; sourceTree = ""; }; 624493A519CCC54100BCDDF4 /* HTMLTokenizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTMLTokenizer.m; sourceTree = ""; }; 624493A919CCE84A00BCDDF4 /* HTMLTokenizerStates.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLTokenizerStates.h; sourceTree = ""; }; @@ -254,6 +259,8 @@ 6234584D1A9D2FA4009BD491 /* HTMLNode.m */, 6279F87219E1808D00F12EE5 /* HTMLElement.h */, 6279F87319E1808D00F12EE5 /* HTMLElement.m */, + 623857941A9E8606003A45D9 /* HTMLDocumentType.h */, + 623857951A9E8606003A45D9 /* HTMLDocumentType.m */, 625A14B619C7829400AD0C32 /* Supporting Files */, ); name = "Source Code"; @@ -343,6 +350,7 @@ 625A150819C78ABA00AD0C32 /* HTMLInputStreamReader.h in Headers */, 62AE593519F97D880043F069 /* HTMLParseErrorToken.h in Headers */, 62AE594919F9948A0043F069 /* HTMLCharacterToken.h in Headers */, + 623857961A9E8606003A45D9 /* HTMLDocumentType.h in Headers */, 6234584E1A9D2FA4009BD491 /* HTMLNode.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -502,6 +510,7 @@ 625A150A19C78ABA00AD0C32 /* HTMLInputStreamReader.m in Sources */, 624493A819CCC54100BCDDF4 /* HTMLTokenizer.m in Sources */, 625A14BE19C7829400AD0C32 /* HTMLKit.m in Sources */, + 623857981A9E8606003A45D9 /* HTMLDocumentType.m in Sources */, 62AE594B19F9948A0043F069 /* HTMLCharacterToken.m in Sources */, 623458501A9D2FA4009BD491 /* HTMLNode.m in Sources */, 62F31FDF19E9DCCF007F0657 /* HTMLTokenizerEntities.m in Sources */, @@ -532,6 +541,7 @@ 625A150919C78ABA00AD0C32 /* HTMLInputStreamReader.m in Sources */, 624493A719CCC54100BCDDF4 /* HTMLTokenizer.m in Sources */, 625A150219C783DE00AD0C32 /* HTMLKit.m in Sources */, + 623857971A9E8606003A45D9 /* HTMLDocumentType.m in Sources */, 62AE594A19F9948A0043F069 /* HTMLCharacterToken.m in Sources */, 6234584F1A9D2FA4009BD491 /* HTMLNode.m in Sources */, 62F31FDE19E9DCCF007F0657 /* HTMLTokenizerEntities.m in Sources */, diff --git a/HTMLKit/HTMLDocumentType.h b/HTMLKit/HTMLDocumentType.h new file mode 100644 index 0000000..f02d42e --- /dev/null +++ b/HTMLKit/HTMLDocumentType.h @@ -0,0 +1,21 @@ +// +// HTMLDocumentType.h +// HTMLKit +// +// Created by Iska on 25/02/15. +// Copyright (c) 2015 BrainCookie. All rights reserved. +// + +#import "HTMLNode.h" + +@interface HTMLDocumentType : HTMLNode + +@property (nonatomic, copy, readonly) NSString *publicIdentifier; + +@property (nonatomic, copy, readonly) NSString *systemIdentifier; + +- (instancetype)initWithName:(NSString *)name + publicIdentifier:(NSString *)publicIdentifier + systemIdentifier:(NSString *)systemIdentifier; + +@end diff --git a/HTMLKit/HTMLDocumentType.m b/HTMLKit/HTMLDocumentType.m new file mode 100644 index 0000000..dc2de5b --- /dev/null +++ b/HTMLKit/HTMLDocumentType.m @@ -0,0 +1,35 @@ +// +// HTMLDocumentType.m +// HTMLKit +// +// Created by Iska on 25/02/15. +// Copyright (c) 2015 BrainCookie. All rights reserved. +// + +#import "HTMLDocumentType.h" + +@implementation HTMLDocumentType + +- (instancetype)initWithName:(NSString *)name + publicIdentifier:(NSString *)publicIdentifier + systemIdentifier:(NSString *)systemIdentifier +{ + self = [super initWithName:name type:HTMLDocumentTypeNode]; + if (self) { + _publicIdentifier = [publicIdentifier copy] ?: @""; + _systemIdentifier = [systemIdentifier copy] ?: @""; + } + return self; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone +{ + HTMLDocumentType *copy = [super copyWithZone:zone]; + copy->_publicIdentifier = self.publicIdentifier; + copy->_systemIdentifier = self.systemIdentifier; + return copy; +} + +@end