diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-04-12 04:22:01 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-04-12 04:22:01 +0800 |
| commit | e81d870756bccbb2b5da52673d52a6bfd93f7b3d (patch) | |
| tree | 3a7ce287b0bda562374b2a77969ee4c0ec51d99a /ricochet/src/parser/tree_builder.cc | |
| parent | 3fbda8903b809e50a8e96acd66b2b80b54e1b6bf (diff) | |
| download | rcc-project-e81d870756bccbb2b5da52673d52a6bfd93f7b3d.tar.gz rcc-project-e81d870756bccbb2b5da52673d52a6bfd93f7b3d.tar.xz | |
feat: implement link extraction and interactive navigation via numbered tags in the browser
Diffstat (limited to 'ricochet/src/parser/tree_builder.cc')
| -rw-r--r-- | ricochet/src/parser/tree_builder.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/ricochet/src/parser/tree_builder.cc b/ricochet/src/parser/tree_builder.cc index 4f7f87e..64f841b 100644 --- a/ricochet/src/parser/tree_builder.cc +++ b/ricochet/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 { |
