瀏覽代碼

LibWeb: Add spec comments to HTML parser "in table text" insertion mode

Andreas Kling 2 年之前
父節點
當前提交
8c3e5137f7
共有 1 個文件被更改,包括 13 次插入5 次删除
  1. 13 5
      Userland/Libraries/LibWeb/HTML/Parser/HTMLParser.cpp

+ 13 - 5
Userland/Libraries/LibWeb/HTML/Parser/HTMLParser.cpp

@@ -2639,25 +2639,31 @@ void HTMLParser::handle_in_cell(HTMLToken& token)
     process_using_the_rules_for(InsertionMode::InBody, token);
 }
 
+// https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-intabletext
 void HTMLParser::handle_in_table_text(HTMLToken& token)
 {
     if (token.is_character()) {
+        // A character token that is U+0000 NULL
         if (token.code_point() == 0) {
+            // Parse error. Ignore the token.
             log_parse_error();
             return;
         }
-
+        // Any other character token
+        // Append the character token to the pending table character tokens list.
         m_pending_table_character_tokens.append(move(token));
         return;
     }
 
+    // Anything else
+
+    // If any of the tokens in the pending table character tokens list
+    // are character tokens that are not ASCII whitespace, then this is a parse error:
+    // reprocess the character tokens in the pending table character tokens list using
+    // the rules given in the "anything else" entry in the "in table" insertion mode.
     for (auto& pending_token : m_pending_table_character_tokens) {
         VERIFY(pending_token.is_character());
         if (!pending_token.is_parser_whitespace()) {
-            // If any of the tokens in the pending table character tokens list
-            // are character tokens that are not ASCII whitespace, then this is a parse error:
-            // reprocess the character tokens in the pending table character tokens list using
-            // the rules given in the "anything else" entry in the "in table" insertion mode.
             log_parse_error();
             m_foster_parenting = true;
             process_using_the_rules_for(InsertionMode::InBody, token);
@@ -2666,10 +2672,12 @@ void HTMLParser::handle_in_table_text(HTMLToken& token)
         }
     }
 
+    // Otherwise, insert the characters given by the pending table character tokens list.
     for (auto& pending_token : m_pending_table_character_tokens) {
         insert_character(pending_token.code_point());
     }
 
+    // Switch the insertion mode to the original insertion mode and reprocess the token.
     m_insertion_mode = m_original_insertion_mode;
     process_using_the_rules_for(m_insertion_mode, token);
 }