diff --git a/html5lib-tests b/html5lib-tests index 6234baea..27724be8 160000 --- a/html5lib-tests +++ b/html5lib-tests @@ -1 +1 @@ -Subproject commit 6234baeabc51f6d51d1cfc2c4e4656bd99531f2b +Subproject commit 27724be8d27a1232a8809a55f9c37b69706cb03e diff --git a/src/tree_builder/rules.expanded.rs b/src/tree_builder/rules.expanded.rs index ff792729..976e2c1d 100644 --- a/src/tree_builder/rules.expanded.rs +++ b/src/tree_builder/rules.expanded.rs @@ -8,7 +8,7 @@ // except according to those terms. // This file is generated from rules.rs -// source SipHash: 18376801535389447229 +// source SipHash: 3904118393820545335 # ! [ doc = @@ -648,9 +648,6 @@ impl TreeBuilderStep for super::TreeBuilder where ::tree_builder::types::TagToken(tag@::tokenizer::Tag { kind: ::tokenizer::StartTag, name: atom!("main"), .. }) | - ::tree_builder::types::TagToken(tag@::tokenizer::Tag { - kind: ::tokenizer::StartTag, - name: atom!("menu"), .. }) | ::tree_builder::types::TagToken(tag@::tokenizer::Tag { kind: ::tokenizer::StartTag, name: atom!("nav"), .. }) | @@ -675,6 +672,17 @@ impl TreeBuilderStep for super::TreeBuilder where self.insert_element_for(tag); Done } + ::tree_builder::types::TagToken(tag@::tokenizer::Tag { + kind: ::tokenizer::StartTag, + name: atom!("menu"), .. }) => + { + self.close_p_element_in_button_scope(); + if self.current_node_named(atom!("menuitem")) { + self.pop(); + } + self.insert_element_for(tag); + Done + } ::tree_builder::types::TagToken(tag@::tokenizer::Tag { kind: ::tokenizer::StartTag, name: atom!("h1"), .. }) | @@ -1186,10 +1194,6 @@ impl TreeBuilderStep for super::TreeBuilder where if !keep_frameset_ok { self.frameset_ok = false; } DoneAckSelfClosing } - ::tree_builder::types::TagToken(tag@::tokenizer::Tag { - kind: ::tokenizer::StartTag, - name: atom!("menuitem"), .. }) - | ::tree_builder::types::TagToken(tag@::tokenizer::Tag { kind: ::tokenizer::StartTag, name: atom!("param"), .. }) | @@ -1207,6 +1211,9 @@ impl TreeBuilderStep for super::TreeBuilder where kind: ::tokenizer::StartTag, name: atom!("hr"), .. }) => { self.close_p_element_in_button_scope(); + if self.current_node_named(atom!("menuitem")) { + self.pop(); + } self.insert_and_pop_element_for(tag); self.frameset_ok = false; DoneAckSelfClosing @@ -1219,54 +1226,6 @@ impl TreeBuilderStep for super::TreeBuilder where self.step(InBody, TagToken(Tag{name: atom!("img"), ..tag})) } - ::tree_builder::types::TagToken(tag@::tokenizer::Tag { - kind: ::tokenizer::StartTag, - name: atom!("isindex"), .. }) - => { - self.unexpected(&tag); - let in_template = - self.in_html_elem_named(atom!("template")); - if !in_template && self.form_elem.is_some() { - return Done; - } - self.frameset_ok = false; - self.close_p_element_in_button_scope(); - let mut form_attrs = vec!(); - let mut prompt = None; - let mut input_attrs = vec!(); - for attr in tag.attrs.into_iter() { - match attr.name { - qualname!("" , "action") => form_attrs.push(attr), - qualname!("" , "prompt") => - prompt = Some(attr.value), - qualname!("" , "name") => { } - _ => input_attrs.push(attr), - } - } - input_attrs.push(Attribute{name: qualname!("" , "name"), - value: - "isindex".to_tendril(),}); - let form = - self.insert_element(Push, ns!(html), atom!("form"), - form_attrs); - if !in_template { self.form_elem = Some(form.clone()); } - self.insert_element(NoPush, ns!(html), atom!("hr"), - vec!()); - self.reconstruct_formatting(); - self.insert_element(Push, ns!(html), atom!("label"), - vec!()); - self.append_text(prompt.unwrap_or_else(|| { - "This is a searchable index. Enter search keywords: ".to_tendril() - })); - self.insert_element(NoPush, ns!(html), atom!("input"), - input_attrs); - self.pop(); - self.insert_element(NoPush, ns!(html), atom!("hr"), - vec!()); - self.pop(); - if !in_template { self.form_elem = None; } - DoneAckSelfClosing - } ::tree_builder::types::TagToken(tag@::tokenizer::Tag { kind: ::tokenizer::StartTag, name: atom!("textarea"), .. }) @@ -1330,6 +1289,17 @@ impl TreeBuilderStep for super::TreeBuilder where self.insert_element_for(tag); Done } + ::tree_builder::types::TagToken(tag@::tokenizer::Tag { + kind: ::tokenizer::StartTag, + name: atom!("menuitem"), .. }) + => { + if self.current_node_named(atom!("menuitem")) { + self.pop(); + } + self.reconstruct_formatting(); + self.insert_element_for(tag); + Done + } ::tree_builder::types::TagToken(tag@::tokenizer::Tag { kind: ::tokenizer::StartTag, name: atom!("rb"), .. }) | diff --git a/src/tree_builder/rules.rs b/src/tree_builder/rules.rs index c5c12108..2c79fda2 100644 --- a/src/tree_builder/rules.rs +++ b/src/tree_builder/rules.rs @@ -351,12 +351,21 @@ impl TreeBuilderStep tag @