aboutsummaryrefslogtreecommitdiff
path: root/src/parser
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser')
-rw-r--r--src/parser/html_lexer.cc6
-rw-r--r--src/parser/tree_builder.cc8
2 files changed, 7 insertions, 7 deletions
diff --git a/src/parser/html_lexer.cc b/src/parser/html_lexer.cc
index 73591b3..2aa05b1 100644
--- a/src/parser/html_lexer.cc
+++ b/src/parser/html_lexer.cc
@@ -90,12 +90,8 @@ std::vector<HtmlToken> HtmlLexer::tokenize( // NOLINT(readability-convert-member
tokens.emplace_back( TagOpenToken { buffer } );
buffer.clear();
state = LexerState::Data;
- } else if ( std::isspace( static_cast<unsigned char>( c ) ) ) {
- tokens.emplace_back( TagOpenToken { buffer } );
- buffer.clear();
- state = LexerState::SwallowAttributes;
} else {
- buffer += static_cast<char>( std::tolower( static_cast<unsigned char>( c ) ) );
+ buffer += c;
}
break;
case LexerState::ClosingTagName:
diff --git a/src/parser/tree_builder.cc b/src/parser/tree_builder.cc
index 4f7f87e..64f841b 100644
--- a/src/parser/tree_builder.cc
+++ b/src/parser/tree_builder.cc
@@ -36,10 +36,14 @@ struct TokenVisitor
void operator()( const TagOpenToken& token ) const
{
+ const std::size_t space_pos = token.name.find( ' ' );
+ const std::string base_name
+ = ( space_pos == std::string::npos ) ? token.name : token.name.substr( 0, space_pos );
+
DomNode new_node { .tag_name = token.name, .text_content = "", .children = {} };
- if ( token.name == "meta" || token.name == "link" || token.name == "img" || token.name == "br"
- || token.name == "hr" || token.name == "input" || token.name == "base" || token.name == "col" ) {
+ if ( base_name == "meta" || base_name == "link" || base_name == "img" || base_name == "br" || base_name == "hr"
+ || base_name == "input" || base_name == "base" || base_name == "col" ) {
stack->back().children.push_back( std::move( new_node ) );
} else {