mirror of
https://github.com/RGBCube/serenity
synced 2025-05-16 19:55:06 +00:00
LibWeb: Change HTMLToken::m_doctype into named DoctypeData struct
This is in preparation for an upcoming storage change of HTMLToken. In contrast to the other token types, the accessor can hand out a mutable reference to allow users to change parts of the DoctypeData easily.
This commit is contained in:
parent
918bde98b1
commit
8b31e41692
4 changed files with 92 additions and 79 deletions
|
@ -258,15 +258,15 @@ void HTMLDocumentParser::process_using_the_rules_for(InsertionMode mode, HTMLTok
|
||||||
|
|
||||||
DOM::QuirksMode HTMLDocumentParser::which_quirks_mode(const HTMLToken& doctype_token) const
|
DOM::QuirksMode HTMLDocumentParser::which_quirks_mode(const HTMLToken& doctype_token) const
|
||||||
{
|
{
|
||||||
if (doctype_token.m_doctype.force_quirks)
|
if (doctype_token.doctype_data().force_quirks)
|
||||||
return DOM::QuirksMode::Yes;
|
return DOM::QuirksMode::Yes;
|
||||||
|
|
||||||
// NOTE: The tokenizer puts the name into lower case for us.
|
// NOTE: The tokenizer puts the name into lower case for us.
|
||||||
if (doctype_token.m_doctype.name != "html")
|
if (doctype_token.doctype_data().name != "html")
|
||||||
return DOM::QuirksMode::Yes;
|
return DOM::QuirksMode::Yes;
|
||||||
|
|
||||||
auto const& public_identifier = doctype_token.m_doctype.public_identifier;
|
auto const& public_identifier = doctype_token.doctype_data().public_identifier;
|
||||||
auto const& system_identifier = doctype_token.m_doctype.system_identifier;
|
auto const& system_identifier = doctype_token.doctype_data().system_identifier;
|
||||||
|
|
||||||
if (public_identifier.equals_ignoring_case("-//W3O//DTD W3 HTML Strict 3.0//EN//"))
|
if (public_identifier.equals_ignoring_case("-//W3O//DTD W3 HTML Strict 3.0//EN//"))
|
||||||
return DOM::QuirksMode::Yes;
|
return DOM::QuirksMode::Yes;
|
||||||
|
@ -285,7 +285,7 @@ DOM::QuirksMode HTMLDocumentParser::which_quirks_mode(const HTMLToken& doctype_t
|
||||||
return DOM::QuirksMode::Yes;
|
return DOM::QuirksMode::Yes;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doctype_token.m_doctype.missing_system_identifier) {
|
if (doctype_token.doctype_data().missing_system_identifier) {
|
||||||
if (public_identifier.starts_with("-//W3C//DTD HTML 4.01 Frameset//", CaseSensitivity::CaseInsensitive))
|
if (public_identifier.starts_with("-//W3C//DTD HTML 4.01 Frameset//", CaseSensitivity::CaseInsensitive))
|
||||||
return DOM::QuirksMode::Yes;
|
return DOM::QuirksMode::Yes;
|
||||||
|
|
||||||
|
@ -299,7 +299,7 @@ DOM::QuirksMode HTMLDocumentParser::which_quirks_mode(const HTMLToken& doctype_t
|
||||||
if (public_identifier.starts_with("-//W3C//DTD XHTML 1.0 Transitional//", CaseSensitivity::CaseInsensitive))
|
if (public_identifier.starts_with("-//W3C//DTD XHTML 1.0 Transitional//", CaseSensitivity::CaseInsensitive))
|
||||||
return DOM::QuirksMode::Limited;
|
return DOM::QuirksMode::Limited;
|
||||||
|
|
||||||
if (!doctype_token.m_doctype.missing_system_identifier) {
|
if (!doctype_token.doctype_data().missing_system_identifier) {
|
||||||
if (public_identifier.starts_with("-//W3C//DTD HTML 4.01 Frameset//", CaseSensitivity::CaseInsensitive))
|
if (public_identifier.starts_with("-//W3C//DTD HTML 4.01 Frameset//", CaseSensitivity::CaseInsensitive))
|
||||||
return DOM::QuirksMode::Limited;
|
return DOM::QuirksMode::Limited;
|
||||||
|
|
||||||
|
@ -324,9 +324,9 @@ void HTMLDocumentParser::handle_initial(HTMLToken& token)
|
||||||
|
|
||||||
if (token.is_doctype()) {
|
if (token.is_doctype()) {
|
||||||
auto doctype = adopt_ref(*new DOM::DocumentType(document()));
|
auto doctype = adopt_ref(*new DOM::DocumentType(document()));
|
||||||
doctype->set_name(token.m_doctype.name);
|
doctype->set_name(token.doctype_data().name);
|
||||||
doctype->set_public_id(token.m_doctype.public_identifier);
|
doctype->set_public_id(token.doctype_data().public_identifier);
|
||||||
doctype->set_system_id(token.m_doctype.system_identifier);
|
doctype->set_system_id(token.doctype_data().system_identifier);
|
||||||
document().append_child(move(doctype));
|
document().append_child(move(doctype));
|
||||||
document().set_quirks_mode(which_quirks_mode(token));
|
document().set_quirks_mode(which_quirks_mode(token));
|
||||||
m_insertion_mode = InsertionMode::BeforeHTML;
|
m_insertion_mode = InsertionMode::BeforeHTML;
|
||||||
|
|
|
@ -16,7 +16,7 @@ String HTMLToken::to_string() const
|
||||||
case HTMLToken::Type::DOCTYPE:
|
case HTMLToken::Type::DOCTYPE:
|
||||||
builder.append("DOCTYPE");
|
builder.append("DOCTYPE");
|
||||||
builder.append(" { name: '");
|
builder.append(" { name: '");
|
||||||
builder.append(m_doctype.name);
|
builder.append(doctype_data().name);
|
||||||
builder.append("' }");
|
builder.append("' }");
|
||||||
break;
|
break;
|
||||||
case HTMLToken::Type::StartTag:
|
case HTMLToken::Type::StartTag:
|
||||||
|
|
|
@ -47,6 +47,17 @@ public:
|
||||||
Position value_end_position;
|
Position value_end_position;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct DoctypeData {
|
||||||
|
// NOTE: "Missing" is a distinct state from the empty string.
|
||||||
|
String name;
|
||||||
|
String public_identifier;
|
||||||
|
String system_identifier;
|
||||||
|
bool missing_name { true };
|
||||||
|
bool missing_public_identifier { true };
|
||||||
|
bool missing_system_identifier { true };
|
||||||
|
bool force_quirks { false };
|
||||||
|
};
|
||||||
|
|
||||||
static HTMLToken make_character(u32 code_point)
|
static HTMLToken make_character(u32 code_point)
|
||||||
{
|
{
|
||||||
HTMLToken token;
|
HTMLToken token;
|
||||||
|
@ -252,6 +263,18 @@ public:
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DoctypeData const& doctype_data() const
|
||||||
|
{
|
||||||
|
VERIFY(is_doctype());
|
||||||
|
return m_doctype;
|
||||||
|
}
|
||||||
|
|
||||||
|
DoctypeData& doctype_data()
|
||||||
|
{
|
||||||
|
VERIFY(is_doctype());
|
||||||
|
return m_doctype;
|
||||||
|
}
|
||||||
|
|
||||||
Type type() const { return m_type; }
|
Type type() const { return m_type; }
|
||||||
|
|
||||||
String to_string() const;
|
String to_string() const;
|
||||||
|
@ -263,17 +286,7 @@ private:
|
||||||
Type m_type { Type::Invalid };
|
Type m_type { Type::Invalid };
|
||||||
|
|
||||||
// Type::DOCTYPE
|
// Type::DOCTYPE
|
||||||
struct {
|
DoctypeData m_doctype;
|
||||||
// NOTE: "Missing" is a distinct state from the empty string.
|
|
||||||
|
|
||||||
String name;
|
|
||||||
bool missing_name { true };
|
|
||||||
String public_identifier;
|
|
||||||
bool missing_public_identifier { true };
|
|
||||||
String system_identifier;
|
|
||||||
bool missing_system_identifier { true };
|
|
||||||
bool force_quirks { false };
|
|
||||||
} m_doctype;
|
|
||||||
|
|
||||||
// Type::StartTag
|
// Type::StartTag
|
||||||
// Type::EndTag
|
// Type::EndTag
|
||||||
|
|
|
@ -440,7 +440,7 @@ _StartOfFunction:
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
create_new_token(HTMLToken::Type::DOCTYPE);
|
create_new_token(HTMLToken::Type::DOCTYPE);
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
|
@ -462,7 +462,7 @@ _StartOfFunction:
|
||||||
{
|
{
|
||||||
create_new_token(HTMLToken::Type::DOCTYPE);
|
create_new_token(HTMLToken::Type::DOCTYPE);
|
||||||
m_current_builder.append_code_point(to_ascii_lowercase(current_input_character.value()));
|
m_current_builder.append_code_point(to_ascii_lowercase(current_input_character.value()));
|
||||||
m_current_token.m_doctype.missing_name = false;
|
m_current_token.doctype_data().missing_name = false;
|
||||||
SWITCH_TO_WITH_UNCLEAN_BUILDER(DOCTYPEName);
|
SWITCH_TO_WITH_UNCLEAN_BUILDER(DOCTYPEName);
|
||||||
}
|
}
|
||||||
ON(0)
|
ON(0)
|
||||||
|
@ -470,21 +470,21 @@ _StartOfFunction:
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
create_new_token(HTMLToken::Type::DOCTYPE);
|
create_new_token(HTMLToken::Type::DOCTYPE);
|
||||||
m_current_builder.append_code_point(0xFFFD);
|
m_current_builder.append_code_point(0xFFFD);
|
||||||
m_current_token.m_doctype.missing_name = false;
|
m_current_token.doctype_data().missing_name = false;
|
||||||
SWITCH_TO_WITH_UNCLEAN_BUILDER(DOCTYPEName);
|
SWITCH_TO_WITH_UNCLEAN_BUILDER(DOCTYPEName);
|
||||||
}
|
}
|
||||||
ON('>')
|
ON('>')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
create_new_token(HTMLToken::Type::DOCTYPE);
|
create_new_token(HTMLToken::Type::DOCTYPE);
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
||||||
}
|
}
|
||||||
ON_EOF
|
ON_EOF
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
create_new_token(HTMLToken::Type::DOCTYPE);
|
create_new_token(HTMLToken::Type::DOCTYPE);
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
|
@ -492,7 +492,7 @@ _StartOfFunction:
|
||||||
{
|
{
|
||||||
create_new_token(HTMLToken::Type::DOCTYPE);
|
create_new_token(HTMLToken::Type::DOCTYPE);
|
||||||
m_current_builder.append_code_point(current_input_character.value());
|
m_current_builder.append_code_point(current_input_character.value());
|
||||||
m_current_token.m_doctype.missing_name = false;
|
m_current_token.doctype_data().missing_name = false;
|
||||||
SWITCH_TO_WITH_UNCLEAN_BUILDER(DOCTYPEName);
|
SWITCH_TO_WITH_UNCLEAN_BUILDER(DOCTYPEName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -502,12 +502,12 @@ _StartOfFunction:
|
||||||
{
|
{
|
||||||
ON_WHITESPACE
|
ON_WHITESPACE
|
||||||
{
|
{
|
||||||
m_current_token.m_doctype.name = consume_current_builder();
|
m_current_token.doctype_data().name = consume_current_builder();
|
||||||
SWITCH_TO(AfterDOCTYPEName);
|
SWITCH_TO(AfterDOCTYPEName);
|
||||||
}
|
}
|
||||||
ON('>')
|
ON('>')
|
||||||
{
|
{
|
||||||
m_current_token.m_doctype.name = consume_current_builder();
|
m_current_token.doctype_data().name = consume_current_builder();
|
||||||
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
||||||
}
|
}
|
||||||
ON_ASCII_UPPER_ALPHA
|
ON_ASCII_UPPER_ALPHA
|
||||||
|
@ -524,7 +524,7 @@ _StartOfFunction:
|
||||||
ON_EOF
|
ON_EOF
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
|
@ -549,7 +549,7 @@ _StartOfFunction:
|
||||||
ON_EOF
|
ON_EOF
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
|
@ -562,7 +562,7 @@ _StartOfFunction:
|
||||||
SWITCH_TO(AfterDOCTYPESystemKeyword);
|
SWITCH_TO(AfterDOCTYPESystemKeyword);
|
||||||
}
|
}
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
RECONSUME_IN(BogusDOCTYPE);
|
RECONSUME_IN(BogusDOCTYPE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -577,32 +577,32 @@ _StartOfFunction:
|
||||||
ON('"')
|
ON('"')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.missing_public_identifier = false;
|
m_current_token.doctype_data().missing_public_identifier = false;
|
||||||
SWITCH_TO(DOCTYPEPublicIdentifierDoubleQuoted);
|
SWITCH_TO(DOCTYPEPublicIdentifierDoubleQuoted);
|
||||||
}
|
}
|
||||||
ON('\'')
|
ON('\'')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.missing_public_identifier = false;
|
m_current_token.doctype_data().missing_public_identifier = false;
|
||||||
SWITCH_TO(DOCTYPEPublicIdentifierSingleQuoted);
|
SWITCH_TO(DOCTYPEPublicIdentifierSingleQuoted);
|
||||||
}
|
}
|
||||||
ON('>')
|
ON('>')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
||||||
}
|
}
|
||||||
ON_EOF
|
ON_EOF
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
ANYTHING_ELSE
|
ANYTHING_ELSE
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
RECONSUME_IN(BogusDOCTYPE);
|
RECONSUME_IN(BogusDOCTYPE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -617,34 +617,34 @@ _StartOfFunction:
|
||||||
ON('"')
|
ON('"')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.system_identifier = {};
|
m_current_token.doctype_data().system_identifier = {};
|
||||||
m_current_token.m_doctype.missing_system_identifier = false;
|
m_current_token.doctype_data().missing_system_identifier = false;
|
||||||
SWITCH_TO(DOCTYPESystemIdentifierDoubleQuoted);
|
SWITCH_TO(DOCTYPESystemIdentifierDoubleQuoted);
|
||||||
}
|
}
|
||||||
ON('\'')
|
ON('\'')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.system_identifier = {};
|
m_current_token.doctype_data().system_identifier = {};
|
||||||
m_current_token.m_doctype.missing_system_identifier = false;
|
m_current_token.doctype_data().missing_system_identifier = false;
|
||||||
SWITCH_TO(DOCTYPESystemIdentifierSingleQuoted);
|
SWITCH_TO(DOCTYPESystemIdentifierSingleQuoted);
|
||||||
}
|
}
|
||||||
ON('>')
|
ON('>')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
||||||
}
|
}
|
||||||
ON_EOF
|
ON_EOF
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
ANYTHING_ELSE
|
ANYTHING_ELSE
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
RECONSUME_IN(BogusDOCTYPE);
|
RECONSUME_IN(BogusDOCTYPE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -658,31 +658,31 @@ _StartOfFunction:
|
||||||
}
|
}
|
||||||
ON('"')
|
ON('"')
|
||||||
{
|
{
|
||||||
m_current_token.m_doctype.missing_public_identifier = false;
|
m_current_token.doctype_data().missing_public_identifier = false;
|
||||||
SWITCH_TO(DOCTYPEPublicIdentifierDoubleQuoted);
|
SWITCH_TO(DOCTYPEPublicIdentifierDoubleQuoted);
|
||||||
}
|
}
|
||||||
ON('\'')
|
ON('\'')
|
||||||
{
|
{
|
||||||
m_current_token.m_doctype.missing_public_identifier = false;
|
m_current_token.doctype_data().missing_public_identifier = false;
|
||||||
SWITCH_TO(DOCTYPEPublicIdentifierSingleQuoted);
|
SWITCH_TO(DOCTYPEPublicIdentifierSingleQuoted);
|
||||||
}
|
}
|
||||||
ON('>')
|
ON('>')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
||||||
}
|
}
|
||||||
ON_EOF
|
ON_EOF
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
ANYTHING_ELSE
|
ANYTHING_ELSE
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
RECONSUME_IN(BogusDOCTYPE);
|
RECONSUME_IN(BogusDOCTYPE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -696,31 +696,31 @@ _StartOfFunction:
|
||||||
}
|
}
|
||||||
ON('"')
|
ON('"')
|
||||||
{
|
{
|
||||||
m_current_token.m_doctype.missing_system_identifier = false;
|
m_current_token.doctype_data().missing_system_identifier = false;
|
||||||
SWITCH_TO(DOCTYPESystemIdentifierDoubleQuoted);
|
SWITCH_TO(DOCTYPESystemIdentifierDoubleQuoted);
|
||||||
}
|
}
|
||||||
ON('\'')
|
ON('\'')
|
||||||
{
|
{
|
||||||
m_current_token.m_doctype.missing_system_identifier = false;
|
m_current_token.doctype_data().missing_system_identifier = false;
|
||||||
SWITCH_TO(DOCTYPESystemIdentifierSingleQuoted);
|
SWITCH_TO(DOCTYPESystemIdentifierSingleQuoted);
|
||||||
}
|
}
|
||||||
ON('>')
|
ON('>')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
||||||
}
|
}
|
||||||
ON_EOF
|
ON_EOF
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
ANYTHING_ELSE
|
ANYTHING_ELSE
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
RECONSUME_IN(BogusDOCTYPE);
|
RECONSUME_IN(BogusDOCTYPE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -730,7 +730,7 @@ _StartOfFunction:
|
||||||
{
|
{
|
||||||
ON('"')
|
ON('"')
|
||||||
{
|
{
|
||||||
m_current_token.m_doctype.public_identifier = consume_current_builder();
|
m_current_token.doctype_data().public_identifier = consume_current_builder();
|
||||||
SWITCH_TO(AfterDOCTYPEPublicIdentifier);
|
SWITCH_TO(AfterDOCTYPEPublicIdentifier);
|
||||||
}
|
}
|
||||||
ON(0)
|
ON(0)
|
||||||
|
@ -742,14 +742,14 @@ _StartOfFunction:
|
||||||
ON('>')
|
ON('>')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.public_identifier = consume_current_builder();
|
m_current_token.doctype_data().public_identifier = consume_current_builder();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
||||||
}
|
}
|
||||||
ON_EOF
|
ON_EOF
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
|
@ -765,7 +765,7 @@ _StartOfFunction:
|
||||||
{
|
{
|
||||||
ON('\'')
|
ON('\'')
|
||||||
{
|
{
|
||||||
m_current_token.m_doctype.public_identifier = consume_current_builder();
|
m_current_token.doctype_data().public_identifier = consume_current_builder();
|
||||||
SWITCH_TO(AfterDOCTYPEPublicIdentifier);
|
SWITCH_TO(AfterDOCTYPEPublicIdentifier);
|
||||||
}
|
}
|
||||||
ON(0)
|
ON(0)
|
||||||
|
@ -777,14 +777,14 @@ _StartOfFunction:
|
||||||
ON('>')
|
ON('>')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.public_identifier = consume_current_builder();
|
m_current_token.doctype_data().public_identifier = consume_current_builder();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
||||||
}
|
}
|
||||||
ON_EOF
|
ON_EOF
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
|
@ -800,7 +800,7 @@ _StartOfFunction:
|
||||||
{
|
{
|
||||||
ON('"')
|
ON('"')
|
||||||
{
|
{
|
||||||
m_current_token.m_doctype.public_identifier = consume_current_builder();
|
m_current_token.doctype_data().public_identifier = consume_current_builder();
|
||||||
SWITCH_TO(AfterDOCTYPESystemIdentifier);
|
SWITCH_TO(AfterDOCTYPESystemIdentifier);
|
||||||
}
|
}
|
||||||
ON(0)
|
ON(0)
|
||||||
|
@ -812,14 +812,14 @@ _StartOfFunction:
|
||||||
ON('>')
|
ON('>')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.public_identifier = consume_current_builder();
|
m_current_token.doctype_data().public_identifier = consume_current_builder();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
||||||
}
|
}
|
||||||
ON_EOF
|
ON_EOF
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
|
@ -835,7 +835,7 @@ _StartOfFunction:
|
||||||
{
|
{
|
||||||
ON('\'')
|
ON('\'')
|
||||||
{
|
{
|
||||||
m_current_token.m_doctype.system_identifier = consume_current_builder();
|
m_current_token.doctype_data().system_identifier = consume_current_builder();
|
||||||
SWITCH_TO(AfterDOCTYPESystemIdentifier);
|
SWITCH_TO(AfterDOCTYPESystemIdentifier);
|
||||||
}
|
}
|
||||||
ON(0)
|
ON(0)
|
||||||
|
@ -847,14 +847,14 @@ _StartOfFunction:
|
||||||
ON('>')
|
ON('>')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.system_identifier = consume_current_builder();
|
m_current_token.doctype_data().system_identifier = consume_current_builder();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
|
||||||
}
|
}
|
||||||
ON_EOF
|
ON_EOF
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
|
@ -879,26 +879,26 @@ _StartOfFunction:
|
||||||
ON('"')
|
ON('"')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.missing_system_identifier = false;
|
m_current_token.doctype_data().missing_system_identifier = false;
|
||||||
SWITCH_TO(DOCTYPESystemIdentifierDoubleQuoted);
|
SWITCH_TO(DOCTYPESystemIdentifierDoubleQuoted);
|
||||||
}
|
}
|
||||||
ON('\'')
|
ON('\'')
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.missing_system_identifier = false;
|
m_current_token.doctype_data().missing_system_identifier = false;
|
||||||
SWITCH_TO(DOCTYPESystemIdentifierSingleQuoted);
|
SWITCH_TO(DOCTYPESystemIdentifierSingleQuoted);
|
||||||
}
|
}
|
||||||
ON_EOF
|
ON_EOF
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
ANYTHING_ELSE
|
ANYTHING_ELSE
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
RECONSUME_IN(BogusDOCTYPE);
|
RECONSUME_IN(BogusDOCTYPE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -916,25 +916,25 @@ _StartOfFunction:
|
||||||
}
|
}
|
||||||
ON('"')
|
ON('"')
|
||||||
{
|
{
|
||||||
m_current_token.m_doctype.missing_system_identifier = false;
|
m_current_token.doctype_data().missing_system_identifier = false;
|
||||||
SWITCH_TO(DOCTYPESystemIdentifierDoubleQuoted);
|
SWITCH_TO(DOCTYPESystemIdentifierDoubleQuoted);
|
||||||
}
|
}
|
||||||
ON('\'')
|
ON('\'')
|
||||||
{
|
{
|
||||||
m_current_token.m_doctype.missing_system_identifier = false;
|
m_current_token.doctype_data().missing_system_identifier = false;
|
||||||
SWITCH_TO(DOCTYPESystemIdentifierSingleQuoted);
|
SWITCH_TO(DOCTYPESystemIdentifierSingleQuoted);
|
||||||
}
|
}
|
||||||
ON_EOF
|
ON_EOF
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
ANYTHING_ELSE
|
ANYTHING_ELSE
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
RECONSUME_IN(BogusDOCTYPE);
|
RECONSUME_IN(BogusDOCTYPE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -953,7 +953,7 @@ _StartOfFunction:
|
||||||
ON_EOF
|
ON_EOF
|
||||||
{
|
{
|
||||||
log_parse_error();
|
log_parse_error();
|
||||||
m_current_token.m_doctype.force_quirks = true;
|
m_current_token.doctype_data().force_quirks = true;
|
||||||
m_queued_tokens.enqueue(move(m_current_token));
|
m_queued_tokens.enqueue(move(m_current_token));
|
||||||
EMIT_EOF;
|
EMIT_EOF;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue