@@ -36,112 +36,54 @@ fn current_node<Handle>(open_elems: &[Handle]) -> &Handle {
36
36
open_elems. last ( ) . expect ( "no current element" )
37
37
}
38
38
39
+ #[ rustfmt:: skip]
39
40
macro_rules! tag {
40
41
// Any start tag
41
42
( <>) => {
42
- crate :: tokenizer:: Tag {
43
- kind: crate :: tokenizer:: StartTag ,
44
- ..
45
- }
46
- } ;
47
-
48
- // Any end tag
49
- ( </>) => {
50
- crate :: tokenizer:: Tag {
51
- kind: crate :: tokenizer:: EndTag ,
52
- ..
53
- }
54
- } ;
55
-
56
- // Named end tag
57
- ( <$tag: tt>) => {
58
- crate :: tokenizer:: Tag {
59
- kind: crate :: tokenizer:: StartTag ,
60
- name: local_name!( $tag) ,
61
- ..
62
- }
63
- } ;
64
-
65
- // Named start tag
66
- ( </$tag: tt>) => {
67
- crate :: tokenizer:: Tag {
68
- kind: crate :: tokenizer:: EndTag ,
69
- name: local_name!( $tag) ,
70
- ..
71
- }
72
- } ;
73
- }
74
-
75
- macro_rules! tags {
76
- // Any start tag
77
- ( <>) => {
78
- tag!( <>)
43
+ crate :: tokenizer:: Tag { kind: crate :: tokenizer:: StartTag , .. }
79
44
} ;
80
45
( <>|$( $tail: tt) * ) => {
81
- tag!( <>) | tags !( $( $tail) * )
46
+ tag!( <>) | tag !( $( $tail) * )
82
47
} ;
83
48
84
49
// Any end tag
85
50
( </>) => {
86
- tag! ( </> )
51
+ crate :: tokenizer :: Tag { kind : crate :: tokenizer :: EndTag , .. }
87
52
} ;
88
53
( </>|$( $tail: tt) * ) => {
89
- tag!( </>) | tags !( $( $tail) * )
54
+ tag!( </>) | tag !( $( $tail) * )
90
55
} ;
91
56
92
57
// Named start tag
93
58
( <$tag: tt>) => {
94
- tag! ( < $tag> )
59
+ crate :: tokenizer :: Tag { kind : crate :: tokenizer :: StartTag , name : local_name! ( $tag) , .. }
95
60
} ;
96
61
( <$tag: tt>|$( $tail: tt) * ) => {
97
- tag!( <$tag>) | tags !( $( $tail) * )
62
+ tag!( <$tag>) | tag !( $( $tail) * )
98
63
} ;
99
64
100
65
// Named end tag
101
66
( </$tag: tt>) => {
102
- tag! ( </ $tag> )
67
+ crate :: tokenizer :: Tag { kind : crate :: tokenizer :: EndTag , name : local_name! ( $tag) , .. }
103
68
} ;
104
69
( </$tag: tt>|$( $tail: tt) * ) => {
105
- tag!( </$tag>) | tags !( $( $tail) * )
70
+ tag!( </$tag>) | tag !( $( $tail) * )
106
71
} ;
107
72
}
108
73
109
74
macro_rules! is_not_tag {
110
75
( $input: ident, $( $tail: tt) * ) => {
111
- !matches!( $input, tags !( $( $tail) * ) )
76
+ !matches!( $input, tag !( $( $tail) * ) )
112
77
} ;
113
78
}
114
79
80
+ #[ rustfmt:: skip]
115
81
macro_rules! tag_token {
116
82
( $id: ident @ $( $tail: tt) * ) => {
117
- crate :: tree_builder:: types:: Token :: Tag (
118
- $id @ ( tags!( $( $tail) * ) )
119
- )
83
+ crate :: tree_builder:: types:: Token :: Tag ( $id @ ( tag!( $( $tail) * ) ) )
120
84
} ;
121
85
( $( $tail: tt) * ) => {
122
- crate :: tree_builder:: types:: Token :: Tag (
123
- tags!( $( $tail) * )
124
- )
125
- } ;
126
- }
127
-
128
- macro_rules! any_end_tag {
129
- ( ) => {
130
- crate :: tokenizer:: Tag {
131
- kind: crate :: tokenizer:: EndTag ,
132
- ..
133
- }
134
- } ;
135
- }
136
-
137
- macro_rules! any_end_tag_token {
138
- ( ) => {
139
- any_end_tag_token!( _)
140
- } ;
141
- ( $tag: ident) => {
142
- crate :: tree_builder:: types:: Token :: Tag (
143
- $tag @ any_end_tag!( )
144
- )
86
+ crate :: tree_builder:: types:: Token :: Tag ( tag!( $( $tail) * ) )
145
87
} ;
146
88
}
147
89
@@ -171,28 +113,6 @@ where
171
113
} ,
172
114
} ,
173
115
174
- //§ the-before-html-insertion-mode
175
- // InsertionMode::BeforeHtml => match_token!(token {
176
- // Token::Characters(SplitStatus::NotSplit, text) => ProcessResult::SplitWhitespace(text),
177
- // Token::Characters(SplitStatus::Whitespace, _) => ProcessResult::Done,
178
- // Token::Comment(text) => self.append_comment_to_doc(text),
179
-
180
- // tag @ <html> => {
181
- // self.create_root(tag.attrs);
182
- // self.mode.set(InsertionMode::BeforeHead);
183
- // ProcessResult::Done
184
- // }
185
-
186
- // </head> </body> </html> </br> => else,
187
-
188
- // tag @ </_> => self.unexpected(&tag),
189
-
190
- // token => {
191
- // self.create_root(vec!());
192
- // ProcessResult::Reprocess(InsertionMode::BeforeHead, token)
193
- // }
194
- // }),
195
-
196
116
//§ the-before-html-insertion-mode
197
117
InsertionMode :: BeforeHtml => match token {
198
118
Token :: Characters ( SplitStatus :: NotSplit , text) => {
@@ -201,14 +121,13 @@ where
201
121
Token :: Characters ( SplitStatus :: Whitespace , _) => ProcessResult :: Done ,
202
122
Token :: Comment ( text) => self . append_comment_to_doc ( text) ,
203
123
204
- // tag_token!(tag @ <"html"> | </"body">) => {
205
- Token :: Tag ( tag @ tags ! ( <html> | </body>) ) => {
124
+ Token :: Tag ( tag @ tag ! ( <html>) ) => {
206
125
self . create_root ( tag. attrs ) ;
207
126
self . mode . set ( InsertionMode :: BeforeHead ) ;
208
127
ProcessResult :: Done
209
128
} ,
210
129
211
- // any_end_tag_token!(tag ) if !matches(tag, </"head"> | </"body"> | </"html"> | </"br">) => {
130
+ // tag_token!(</> ) if !matches(tag, </"head"> | </"body"> | </"html"> | </"br">) => {
212
131
Token :: Tag ( tag @ tag ! ( </>) ) if is_not_tag ! ( tag, </head> | </body> | </html> | </br>) => {
213
132
self . unexpected ( & tag)
214
133
} ,
0 commit comments