mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-02-19 14:14:41 +00:00
LibWeb: Implement a bit more of DOCTYPE tokenization
This commit is contained in:
@@ -58,6 +58,9 @@
|
||||
#define ON_ASCII_ALPHA \
|
||||
if (current_input_character.has_value() && isalpha(current_input_character.value()))
|
||||
|
||||
#define ON_ASCII_UPPER_ALPHA \
|
||||
if (current_input_character.has_value() && current_input_character.value() >= 'A' && current_input_character.value() <= 'Z')
|
||||
|
||||
#define ON_WHITESPACE \
|
||||
if (current_input_character.has_value() && (current_input_character.value() == '\t' || current_input_character.value() == '\a' || current_input_character.value() == '\f' || current_input_character.value() == ' '))
|
||||
|
||||
@@ -207,6 +210,18 @@ void HTMLTokenizer::run()
|
||||
{
|
||||
SWITCH_TO(BeforeDOCTYPEName);
|
||||
}
|
||||
ON('>')
|
||||
{
|
||||
RECONSUME_IN(BeforeDOCTYPEName);
|
||||
}
|
||||
ON_EOF
|
||||
{
|
||||
TODO();
|
||||
}
|
||||
ANYTHING_ELSE
|
||||
{
|
||||
TODO();
|
||||
}
|
||||
}
|
||||
END_STATE
|
||||
|
||||
@@ -216,6 +231,24 @@ void HTMLTokenizer::run()
|
||||
{
|
||||
continue;
|
||||
}
|
||||
ON_ASCII_UPPER_ALPHA
|
||||
{
|
||||
create_new_token(HTMLToken::Type::DOCTYPE);
|
||||
m_current_token.m_doctype.name.append(tolower(current_input_character.value()));
|
||||
SWITCH_TO(DOCTYPEName);
|
||||
}
|
||||
ON(0)
|
||||
{
|
||||
TODO();
|
||||
}
|
||||
ON('>')
|
||||
{
|
||||
TODO();
|
||||
}
|
||||
ON_EOF
|
||||
{
|
||||
TODO();
|
||||
}
|
||||
ANYTHING_ELSE
|
||||
{
|
||||
create_new_token(HTMLToken::Type::DOCTYPE);
|
||||
@@ -227,11 +260,27 @@ void HTMLTokenizer::run()
|
||||
|
||||
BEGIN_STATE(DOCTYPEName)
|
||||
{
|
||||
ON_WHITESPACE
|
||||
{
|
||||
SWITCH_TO(AfterDOCTYPEName);
|
||||
}
|
||||
ON('>')
|
||||
{
|
||||
emit_current_token();
|
||||
SWITCH_TO(Data);
|
||||
}
|
||||
ON_ASCII_UPPER_ALPHA
|
||||
{
|
||||
m_current_token.m_doctype.name.append(tolower(current_input_character.value()));
|
||||
}
|
||||
ON(0)
|
||||
{
|
||||
TODO();
|
||||
}
|
||||
ON_EOF
|
||||
{
|
||||
TODO();
|
||||
}
|
||||
ANYTHING_ELSE
|
||||
{
|
||||
m_current_token.m_doctype.name.append(current_input_character.value());
|
||||
@@ -240,6 +289,28 @@ void HTMLTokenizer::run()
|
||||
}
|
||||
END_STATE
|
||||
|
||||
BEGIN_STATE(AfterDOCTYPEName)
|
||||
{
|
||||
ON_WHITESPACE
|
||||
{
|
||||
continue;
|
||||
}
|
||||
ON('>')
|
||||
{
|
||||
emit_current_token();
|
||||
SWITCH_TO(Data);
|
||||
}
|
||||
ON_EOF
|
||||
{
|
||||
TODO();
|
||||
}
|
||||
ANYTHING_ELSE
|
||||
{
|
||||
TODO();
|
||||
}
|
||||
}
|
||||
END_STATE
|
||||
|
||||
BEGIN_STATE(BeforeAttributeName)
|
||||
{
|
||||
ON_WHITESPACE
|
||||
|
||||
Reference in New Issue
Block a user