9
9
10
10
use super :: { TokenSink , XmlTokenizer } ;
11
11
use crate :: data;
12
- use crate :: macros:: unwrap_or_return;
13
12
use crate :: tendril:: StrTendril ;
14
13
use log:: debug;
15
14
use markup5ever:: buffer_queue:: BufferQueue ;
@@ -138,21 +137,20 @@ impl CharRefTokenizer {
138
137
tokenizer : & XmlTokenizer < Sink > ,
139
138
input : & BufferQueue ,
140
139
) -> Status {
141
- match unwrap_or_return ! ( tokenizer. peek( input) , Stuck ) {
142
- '\t' | '\n' | '\x0C' | ' ' | '<' | '&' => self . finish_none ( ) ,
143
- c if Some ( c) == self . addnl_allowed => self . finish_none ( ) ,
144
-
145
- '#' => {
140
+ match tokenizer. peek ( input) {
141
+ Some ( '\t' | '\n' | '\x0C' | ' ' | '<' | '&' ) => self . finish_none ( ) ,
142
+ Some ( c) if Some ( c) == self . addnl_allowed => self . finish_none ( ) ,
143
+ Some ( '#' ) => {
146
144
tokenizer. discard_char ( input) ;
147
145
self . state = Octothorpe ;
148
146
Progress
149
147
} ,
150
-
151
- _ => {
148
+ Some ( _) => {
152
149
self . state = Named ;
153
150
self . name_buf_opt = Some ( StrTendril :: new ( ) ) ;
154
151
Progress
155
152
} ,
153
+ None => Stuck ,
156
154
}
157
155
}
158
156
@@ -161,18 +159,17 @@ impl CharRefTokenizer {
161
159
tokenizer : & XmlTokenizer < Sink > ,
162
160
input : & BufferQueue ,
163
161
) -> Status {
164
- let c = unwrap_or_return ! ( tokenizer. peek( input) , Stuck ) ;
165
- match c {
166
- 'x' | 'X' => {
162
+ match tokenizer. peek ( input) {
163
+ Some ( c @ ( 'x' | 'X' ) ) => {
167
164
tokenizer. discard_char ( input) ;
168
165
self . hex_marker = Some ( c) ;
169
166
self . state = Numeric ( 16 ) ;
170
167
} ,
171
-
172
- _ => {
168
+ Some ( _) => {
173
169
self . hex_marker = None ;
174
170
self . state = Numeric ( 10 ) ;
175
171
} ,
172
+ None => return Stuck ,
176
173
}
177
174
Progress
178
175
}
@@ -183,7 +180,9 @@ impl CharRefTokenizer {
183
180
base : u32 ,
184
181
input : & BufferQueue ,
185
182
) -> Status {
186
- let c = unwrap_or_return ! ( tokenizer. peek( input) , Stuck ) ;
183
+ let Some ( c) = tokenizer. peek ( input) else {
184
+ return Stuck ;
185
+ } ;
187
186
match c. to_digit ( base) {
188
187
Some ( n) => {
189
188
tokenizer. discard_char ( input) ;
@@ -212,11 +211,12 @@ impl CharRefTokenizer {
212
211
tokenizer : & XmlTokenizer < Sink > ,
213
212
input : & BufferQueue ,
214
213
) -> Status {
215
- match unwrap_or_return ! ( tokenizer. peek( input) , Stuck ) {
216
- ';' => tokenizer. discard_char ( input) ,
217
- _ => tokenizer. emit_error ( Borrowed (
214
+ match tokenizer. peek ( input) {
215
+ Some ( ';' ) => tokenizer. discard_char ( input) ,
216
+ Some ( _ ) => tokenizer. emit_error ( Borrowed (
218
217
"Semicolon missing after numeric character reference" ,
219
218
) ) ,
219
+ None => return Stuck ,
220
220
} ;
221
221
self . finish_numeric ( tokenizer)
222
222
}
@@ -277,7 +277,9 @@ impl CharRefTokenizer {
277
277
tokenizer : & XmlTokenizer < Sink > ,
278
278
input : & BufferQueue ,
279
279
) -> Status {
280
- let c = unwrap_or_return ! ( tokenizer. get_char( input) , Stuck ) ;
280
+ let Some ( c) = tokenizer. get_char ( input) else {
281
+ return Stuck ;
282
+ } ;
281
283
self . name_buf_mut ( ) . push_char ( c) ;
282
284
match data:: NAMED_ENTITIES . get ( & self . name_buf ( ) [ ..] ) {
283
285
// We have either a full match or a prefix of one.
@@ -407,7 +409,9 @@ impl CharRefTokenizer {
407
409
tokenizer : & XmlTokenizer < Sink > ,
408
410
input : & BufferQueue ,
409
411
) -> Status {
410
- let c = unwrap_or_return ! ( tokenizer. get_char( input) , Stuck ) ;
412
+ let Some ( c) = tokenizer. get_char ( input) else {
413
+ return Stuck ;
414
+ } ;
411
415
self . name_buf_mut ( ) . push_char ( c) ;
412
416
match c {
413
417
_ if c. is_ascii_alphanumeric ( ) => return Progress ,
0 commit comments