Files
HTMLKit/Sources/include/HTMLQuirksMode.h
T
2016-08-27 01:59:53 +02:00

94 lines
4.0 KiB
Objective-C

//
// HTMLQuirksMode.h
// HTMLKit
//
// Created by Iska on 28/02/15.
// Copyright (c) 2015 BrainCookie. All rights reserved.
//
#import "NSString+HTMLKit.h"
/**
HTML quirks modes
https://html.spec.whatwg.org/multipage/infrastructure.html#quirks-mode
*/
typedef NS_ENUM(short, HTMLQuirksMode)
{
HTMLQuirksModeNoQuirks,
HTMLQuirksModeQuirks,
HTMLQuirksModeLimitedQuirks
};
#define QUIRKS_MODE_PREFIXES \
QUIRKS_ENTRY( "+//Silmaril//dtd html Pro v0r11 19970101//" ) \
QUIRKS_ENTRY( "-//AS//DTD HTML 3.0 asWedit + extensions//" ) \
QUIRKS_ENTRY( "-//AdvaSoft Ltd//DTD HTML 3.0 asWedit + extensions//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML 2.0 Level 1//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML 2.0 Level 2//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML 2.0 Strict Level 1//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML 2.0 Strict Level 2//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML 2.0 Strict//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML 2.0//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML 2.1E//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML 3.0//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML 3.2 Final//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML 3.2//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML 3//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML Level 0//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML Level 1//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML Level 2//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML Level 3//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML Strict Level 0//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML Strict Level 1//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML Strict Level 2//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML Strict Level 3//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML Strict//" ) \
QUIRKS_ENTRY( "-//IETF//DTD HTML//" ) \
QUIRKS_ENTRY( "-//Metrius//DTD Metrius Presentational//" ) \
QUIRKS_ENTRY( "-//Microsoft//DTD Internet Explorer 2.0 HTML Strict//" ) \
QUIRKS_ENTRY( "-//Microsoft//DTD Internet Explorer 2.0 HTML//" ) \
QUIRKS_ENTRY( "-//Microsoft//DTD Internet Explorer 2.0 Tables//" ) \
QUIRKS_ENTRY( "-//Microsoft//DTD Internet Explorer 3.0 HTML Strict//" ) \
QUIRKS_ENTRY( "-//Microsoft//DTD Internet Explorer 3.0 HTML//" ) \
QUIRKS_ENTRY( "-//Microsoft//DTD Internet Explorer 3.0 Tables//" ) \
QUIRKS_ENTRY( "-//Netscape Comm. Corp.//DTD HTML//" ) \
QUIRKS_ENTRY( "-//Netscape Comm. Corp.//DTD Strict HTML//" ) \
QUIRKS_ENTRY( "-//O'Reilly and Associates//DTD HTML 2.0//" ) \
QUIRKS_ENTRY( "-//O'Reilly and Associates//DTD HTML Extended 1.0//" ) \
QUIRKS_ENTRY( "-//O'Reilly and Associates//DTD HTML Extended Relaxed 1.0//" ) \
QUIRKS_ENTRY( "-//SQ//DTD HTML 2.0 HoTMetaL + extensions//" ) \
QUIRKS_ENTRY( "-//SoftQuad Software//DTD HoTMetaL PRO 6.0::19990601::extensions to HTML 4.0//" ) \
QUIRKS_ENTRY( "-//SoftQuad//DTD HoTMetaL PRO 4.0::19971010::extensions to HTML 4.0//" ) \
QUIRKS_ENTRY( "-//Spyglass//DTD HTML 2.0 Extended//" ) \
QUIRKS_ENTRY( "-//Sun Microsystems Corp.//DTD HotJava HTML//" ) \
QUIRKS_ENTRY( "-//Sun Microsystems Corp.//DTD HotJava Strict HTML//" ) \
QUIRKS_ENTRY( "-//W3C//DTD HTML 3 1995-03-24//" ) \
QUIRKS_ENTRY( "-//W3C//DTD HTML 3.2 Draft//" ) \
QUIRKS_ENTRY( "-//W3C//DTD HTML 3.2 Final//" ) \
QUIRKS_ENTRY( "-//W3C//DTD HTML 3.2//" ) \
QUIRKS_ENTRY( "-//W3C//DTD HTML 3.2S Draft//" ) \
QUIRKS_ENTRY( "-//W3C//DTD HTML 4.0 Frameset//" ) \
QUIRKS_ENTRY( "-//W3C//DTD HTML 4.0 Transitional//" ) \
QUIRKS_ENTRY( "-//W3C//DTD HTML Experimental 19960712//" ) \
QUIRKS_ENTRY( "-//W3C//DTD HTML Experimental 970421//" ) \
QUIRKS_ENTRY( "-//W3C//DTD W3 HTML//" ) \
QUIRKS_ENTRY( "-//W3O//DTD W3 HTML 3.0//" ) \
QUIRKS_ENTRY( "-//WebTechs//DTD Mozilla HTML 2.0//" ) \
QUIRKS_ENTRY( "-//WebTechs//DTD Mozilla HTML//" )
static NSString * HTMLQuirksModePrefixes[] = {
#define QUIRKS_ENTRY( prefix ) @prefix,
QUIRKS_MODE_PREFIXES
#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;
}