99
1010//! The HTML5 tree builder.
1111
12- pub use crate :: interface:: { create_element, ElementFlags , NextParserState , Tracer , TreeSink } ;
12+ pub use crate :: interface:: {
13+ create_element, ElemName , ElementFlags , NextParserState , Tracer , TreeSink ,
14+ } ;
1315pub use crate :: interface:: { AppendNode , AppendText , Attribute , NodeOrText } ;
1416pub use crate :: interface:: { LimitedQuirks , NoQuirks , Quirks , QuirksMode } ;
1517
@@ -187,7 +189,8 @@ where
187189 opts : TreeBuilderOpts ,
188190 ) -> TreeBuilder < Handle , Sink > {
189191 let doc_handle = sink. get_document ( ) ;
190- let context_is_template = sink. elem_name ( & context_elem) == expanded_name ! ( html "template" ) ;
192+ let context_is_template =
193+ sink. elem_name ( & context_elem) . expanded ( ) == expanded_name ! ( html "template" ) ;
191194 let template_modes = if context_is_template {
192195 RefCell :: new ( vec ! [ InTemplate ] )
193196 } else {
@@ -231,7 +234,8 @@ where
231234 pub fn tokenizer_state_for_context_elem ( & self ) -> tok_state:: State {
232235 let context_elem = self . context_elem . borrow ( ) ;
233236 let elem = context_elem. as_ref ( ) . expect ( "no context element" ) ;
234- let name = match self . sink . elem_name ( elem) {
237+ let elem_name = self . sink . elem_name ( elem) ;
238+ let name = match elem_name. expanded ( ) {
235239 ExpandedName {
236240 ns : & ns ! ( html) ,
237241 local,
@@ -296,8 +300,8 @@ where
296300 print ! ( " open_elems:" ) ;
297301 for node in self . open_elems . borrow ( ) . iter ( ) {
298302 let name = self . sink . elem_name ( node) ;
299- match * name. ns {
300- ns ! ( html) => print ! ( " {}" , name. local ) ,
303+ match * name. ns ( ) {
304+ ns ! ( html) => print ! ( " {}" , name. local_name ( ) ) ,
301305 _ => panic ! ( ) ,
302306 }
303307 }
@@ -308,8 +312,8 @@ where
308312 & Marker => print ! ( " Marker" ) ,
309313 Element ( h, _) => {
310314 let name = self . sink . elem_name ( h) ;
311- match * name. ns {
312- ns ! ( html) => print ! ( " {}" , name. local ) ,
315+ match * name. ns ( ) {
316+ ns ! ( html) => print ! ( " {}" , name. local_name ( ) ) ,
313317 _ => panic ! ( ) ,
314318 }
315319 } ,
@@ -541,7 +545,7 @@ where
541545
542546 fn adjusted_current_node_present_but_not_in_html_namespace ( & self ) -> bool {
543547 !self . open_elems . borrow ( ) . is_empty ( )
544- && self . sink . elem_name ( & self . adjusted_current_node ( ) ) . ns != & ns ! ( html)
548+ && * self . sink . elem_name ( & self . adjusted_current_node ( ) ) . ns ( ) != ns ! ( html)
545549 }
546550}
547551
@@ -689,7 +693,7 @@ where
689693 where
690694 TagSet : Fn ( ExpandedName ) -> bool ,
691695 {
692- set ( self . sink . elem_name ( & self . current_node ( ) ) )
696+ set ( self . sink . elem_name ( & self . current_node ( ) ) . expanded ( ) )
693697 }
694698
695699 // Insert at the "appropriate place for inserting a node".
@@ -1014,7 +1018,8 @@ where
10141018 for elem in self . open_elems . borrow ( ) . iter ( ) {
10151019 let error;
10161020 {
1017- let name = self . sink . elem_name ( elem) ;
1021+ let elem_name = self . sink . elem_name ( elem) ;
1022+ let name = elem_name. expanded ( ) ;
10181023 if body_end_ok ( name) {
10191024 continue ;
10201025 }
@@ -1041,7 +1046,7 @@ where
10411046 if pred ( node. clone ( ) ) {
10421047 return true ;
10431048 }
1044- if scope ( self . sink . elem_name ( node) ) {
1049+ if scope ( self . sink . elem_name ( node) . expanded ( ) ) {
10451050 return false ;
10461051 }
10471052 }
@@ -1055,12 +1060,12 @@ where
10551060 where
10561061 TagSet : Fn ( ExpandedName ) -> bool ,
10571062 {
1058- set ( self . sink . elem_name ( elem) )
1063+ set ( self . sink . elem_name ( elem) . expanded ( ) )
10591064 }
10601065
10611066 fn html_elem_named ( & self , elem : & Handle , name : LocalName ) -> bool {
1062- let expanded = self . sink . elem_name ( elem) ;
1063- * expanded . ns == ns ! ( html) && * expanded . local == name
1067+ let elem_name = self . sink . elem_name ( elem) ;
1068+ * elem_name . ns ( ) == ns ! ( html) && * elem_name . local_name ( ) == name
10641069 }
10651070
10661071 fn in_html_elem_named ( & self , name : LocalName ) -> bool {
@@ -1090,8 +1095,8 @@ where
10901095 {
10911096 let open_elems = self . open_elems . borrow ( ) ;
10921097 let elem = unwrap_or_return ! ( open_elems. last( ) ) ;
1093- let nsname = self . sink . elem_name ( elem) ;
1094- if !set ( nsname ) {
1098+ let elem_name = self . sink . elem_name ( elem) ;
1099+ if !set ( elem_name . expanded ( ) ) {
10951100 return ;
10961101 }
10971102 }
@@ -1132,7 +1137,7 @@ where
11321137 match self . open_elems . borrow_mut ( ) . pop ( ) {
11331138 None => break ,
11341139 Some ( elem) => {
1135- if pred ( self . sink . elem_name ( & elem) ) {
1140+ if pred ( self . sink . elem_name ( & elem) . expanded ( ) ) {
11361141 break ;
11371142 }
11381143 } ,
@@ -1217,7 +1222,8 @@ where
12171222 if let ( true , Some ( ctx) ) = ( last, context_elem. as_ref ( ) ) {
12181223 node = ctx;
12191224 }
1220- let name = match self . sink . elem_name ( node) {
1225+ let elem_name = self . sink . elem_name ( node) ;
1226+ let name = match elem_name. expanded ( ) {
12211227 ExpandedName {
12221228 ns : & ns ! ( html) ,
12231229 local,
@@ -1470,7 +1476,8 @@ where
14701476 }
14711477
14721478 let current = self . adjusted_current_node ( ) ;
1473- let name = self . sink . elem_name ( & current) ;
1479+ let elem_name = self . sink . elem_name ( & current) ;
1480+ let name = elem_name. expanded ( ) ;
14741481 if let ns ! ( html) = * name. ns {
14751482 return false ;
14761483 }
@@ -1681,7 +1688,7 @@ where
16811688 let current_ns = self
16821689 . sink
16831690 . elem_name ( & self . adjusted_current_node ( ) )
1684- . ns
1691+ . ns ( )
16851692 . clone ( ) ;
16861693 match current_ns {
16871694 ns ! ( mathml) => self . adjust_mathml_attributes ( & mut tag) ,
0 commit comments