9
9
10
10
//! The HTML5 tree builder.
11
11
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
+ } ;
13
15
pub use crate :: interface:: { AppendNode , AppendText , Attribute , NodeOrText } ;
14
16
pub use crate :: interface:: { LimitedQuirks , NoQuirks , Quirks , QuirksMode } ;
15
17
@@ -187,7 +189,8 @@ where
187
189
opts : TreeBuilderOpts ,
188
190
) -> TreeBuilder < Handle , Sink > {
189
191
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" ) ;
191
194
let template_modes = if context_is_template {
192
195
RefCell :: new ( vec ! [ InTemplate ] )
193
196
} else {
@@ -231,7 +234,8 @@ where
231
234
pub fn tokenizer_state_for_context_elem ( & self ) -> tok_state:: State {
232
235
let context_elem = self . context_elem . borrow ( ) ;
233
236
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 ( ) {
235
239
ExpandedName {
236
240
ns : & ns ! ( html) ,
237
241
local,
@@ -296,8 +300,8 @@ where
296
300
print ! ( " open_elems:" ) ;
297
301
for node in self . open_elems . borrow ( ) . iter ( ) {
298
302
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 ( ) ) ,
301
305
_ => panic ! ( ) ,
302
306
}
303
307
}
@@ -308,8 +312,8 @@ where
308
312
& Marker => print ! ( " Marker" ) ,
309
313
Element ( h, _) => {
310
314
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 ( ) ) ,
313
317
_ => panic ! ( ) ,
314
318
}
315
319
} ,
@@ -541,7 +545,7 @@ where
541
545
542
546
fn adjusted_current_node_present_but_not_in_html_namespace ( & self ) -> bool {
543
547
!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)
545
549
}
546
550
}
547
551
@@ -689,7 +693,7 @@ where
689
693
where
690
694
TagSet : Fn ( ExpandedName ) -> bool ,
691
695
{
692
- set ( self . sink . elem_name ( & self . current_node ( ) ) )
696
+ set ( self . sink . elem_name ( & self . current_node ( ) ) . expanded ( ) )
693
697
}
694
698
695
699
// Insert at the "appropriate place for inserting a node".
@@ -1014,7 +1018,8 @@ where
1014
1018
for elem in self . open_elems . borrow ( ) . iter ( ) {
1015
1019
let error;
1016
1020
{
1017
- let name = self . sink . elem_name ( elem) ;
1021
+ let elem_name = self . sink . elem_name ( elem) ;
1022
+ let name = elem_name. expanded ( ) ;
1018
1023
if body_end_ok ( name) {
1019
1024
continue ;
1020
1025
}
@@ -1041,7 +1046,7 @@ where
1041
1046
if pred ( node. clone ( ) ) {
1042
1047
return true ;
1043
1048
}
1044
- if scope ( self . sink . elem_name ( node) ) {
1049
+ if scope ( self . sink . elem_name ( node) . expanded ( ) ) {
1045
1050
return false ;
1046
1051
}
1047
1052
}
@@ -1055,12 +1060,12 @@ where
1055
1060
where
1056
1061
TagSet : Fn ( ExpandedName ) -> bool ,
1057
1062
{
1058
- set ( self . sink . elem_name ( elem) )
1063
+ set ( self . sink . elem_name ( elem) . expanded ( ) )
1059
1064
}
1060
1065
1061
1066
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
1064
1069
}
1065
1070
1066
1071
fn in_html_elem_named ( & self , name : LocalName ) -> bool {
@@ -1090,8 +1095,8 @@ where
1090
1095
{
1091
1096
let open_elems = self . open_elems . borrow ( ) ;
1092
1097
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 ( ) ) {
1095
1100
return ;
1096
1101
}
1097
1102
}
@@ -1132,7 +1137,7 @@ where
1132
1137
match self . open_elems . borrow_mut ( ) . pop ( ) {
1133
1138
None => break ,
1134
1139
Some ( elem) => {
1135
- if pred ( self . sink . elem_name ( & elem) ) {
1140
+ if pred ( self . sink . elem_name ( & elem) . expanded ( ) ) {
1136
1141
break ;
1137
1142
}
1138
1143
} ,
@@ -1217,7 +1222,8 @@ where
1217
1222
if let ( true , Some ( ctx) ) = ( last, context_elem. as_ref ( ) ) {
1218
1223
node = ctx;
1219
1224
}
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 ( ) {
1221
1227
ExpandedName {
1222
1228
ns : & ns ! ( html) ,
1223
1229
local,
@@ -1470,7 +1476,8 @@ where
1470
1476
}
1471
1477
1472
1478
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 ( ) ;
1474
1481
if let ns ! ( html) = * name. ns {
1475
1482
return false ;
1476
1483
}
@@ -1681,7 +1688,7 @@ where
1681
1688
let current_ns = self
1682
1689
. sink
1683
1690
. elem_name ( & self . adjusted_current_node ( ) )
1684
- . ns
1691
+ . ns ( )
1685
1692
. clone ( ) ;
1686
1693
match current_ns {
1687
1694
ns ! ( mathml) => self . adjust_mathml_attributes ( & mut tag) ,
0 commit comments