Skip to content

Commit 0b37b54

Browse files
authored
Don't re-export xml5ever Token variants (#619)
Signed-off-by: Simon Wülker <[email protected]>
1 parent c3dbaf5 commit 0b37b54

File tree

7 files changed

+67
-78
lines changed

7 files changed

+67
-78
lines changed

rcdom/tests/xml-tokenizer.rs

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,10 @@ use util::runner::{run_all, Test};
2121

2222
use markup5ever::buffer_queue::BufferQueue;
2323
use xml5ever::tendril::{SliceExt, StrTendril};
24-
use xml5ever::tokenizer::{CharacterTokens, Token, TokenSink};
25-
use xml5ever::tokenizer::{CommentToken, EmptyTag, EndTag, ShortTag, StartTag, Tag};
26-
use xml5ever::tokenizer::{Doctype, DoctypeToken, PIToken, Pi};
27-
use xml5ever::tokenizer::{EOFToken, XmlTokenizer, XmlTokenizerOpts};
28-
use xml5ever::tokenizer::{NullCharacterToken, ParseError, TagToken};
24+
use xml5ever::tokenizer::{
25+
Doctype, EmptyTag, EndTag, Pi, ShortTag, StartTag, Tag, Token, TokenSink, XmlTokenizer,
26+
XmlTokenizerOpts,
27+
};
2928
use xml5ever::{ns, Attribute, LocalName, QualName};
3029

3130
mod util {
@@ -81,7 +80,7 @@ impl TokenLogger {
8180
fn finish_str(&self) {
8281
if !self.current_str.borrow().is_empty() {
8382
let s = self.current_str.take();
84-
self.tokens.borrow_mut().push(CharacterTokens(s));
83+
self.tokens.borrow_mut().push(Token::Characters(s));
8584
}
8685
}
8786

@@ -96,21 +95,20 @@ impl TokenSink for TokenLogger {
9695

9796
fn process_token(&self, token: Token) -> ProcessResult<()> {
9897
match token {
99-
CharacterTokens(b) => {
100-
self.current_str.borrow_mut().push_slice(&b);
98+
Token::Characters(characters) => {
99+
self.current_str.borrow_mut().push_slice(&characters);
101100
},
102101

103-
NullCharacterToken => {
102+
Token::NullCharacter => {
104103
self.current_str.borrow_mut().push_char('\0');
105104
},
106105

107-
ParseError(_) => {
106+
Token::ParseError(_) => {
108107
if self.exact_errors {
109-
self.push(ParseError(Borrowed("")));
108+
self.push(Token::ParseError(Borrowed("")));
110109
}
111110
},
112-
113-
TagToken(mut t) => {
111+
Token::Tag(mut t) => {
114112
// The spec seems to indicate that one can emit
115113
// erroneous end tags with attrs, but the test
116114
// cases don't contain them.
@@ -120,11 +118,9 @@ impl TokenSink for TokenLogger {
120118
},
121119
_ => t.attrs.sort_by(|a1, a2| a1.name.cmp(&a2.name)),
122120
}
123-
self.push(TagToken(t));
121+
self.push(Token::Tag(t));
124122
},
125-
126-
EOFToken => (),
127-
123+
Token::EndOfFile => (),
128124
_ => self.push(token),
129125
};
130126
ProcessResult::Continue
@@ -211,7 +207,7 @@ fn json_to_token(js: &Value) -> Token {
211207
// Collect refs here so we don't have to use "ref" in all the patterns below.
212208
let args: Vec<&Value> = parts[1..].iter().collect();
213209
match &*parts[0].get_str() {
214-
"StartTag" => TagToken(Tag {
210+
"StartTag" => Token::Tag(Tag {
215211
kind: StartTag,
216212
name: QualName::new(None, ns!(), LocalName::from(args[0].get_str())),
217213
attrs: args[1]
@@ -224,19 +220,19 @@ fn json_to_token(js: &Value) -> Token {
224220
.collect(),
225221
}),
226222

227-
"EndTag" => TagToken(Tag {
223+
"EndTag" => Token::Tag(Tag {
228224
kind: EndTag,
229225
name: QualName::new(None, ns!(), LocalName::from(args[0].get_str())),
230226
attrs: vec![],
231227
}),
232228

233-
"ShortTag" => TagToken(Tag {
229+
"ShortTag" => Token::Tag(Tag {
234230
kind: ShortTag,
235231
name: QualName::new(None, ns!(), LocalName::from(args[0].get_str())),
236232
attrs: vec![],
237233
}),
238234

239-
"EmptyTag" => TagToken(Tag {
235+
"EmptyTag" => Token::Tag(Tag {
240236
kind: EmptyTag,
241237
name: QualName::new(None, ns!(), LocalName::from(args[0].get_str())),
242238
attrs: args[1]
@@ -249,16 +245,16 @@ fn json_to_token(js: &Value) -> Token {
249245
.collect(),
250246
}),
251247

252-
"Comment" => CommentToken(args[0].get_tendril()),
248+
"Comment" => Token::Comment(args[0].get_tendril()),
253249

254-
"Character" => CharacterTokens(args[0].get_tendril()),
250+
"Character" => Token::Characters(args[0].get_tendril()),
255251

256-
"PI" => PIToken(Pi {
252+
"PI" => Token::ProcessingInstruction(Pi {
257253
target: args[0].get_tendril(),
258254
data: args[1].get_tendril(),
259255
}),
260256

261-
"DOCTYPE" => DoctypeToken(Doctype {
257+
"DOCTYPE" => Token::Doctype(Doctype {
262258
name: args[0].get_nullable_tendril(),
263259
public_id: args[1].get_nullable_tendril(),
264260
system_id: args[2].get_nullable_tendril(),
@@ -278,7 +274,7 @@ fn json_to_tokens(js: &Value, exact_errors: bool) -> Vec<Token> {
278274
for tok in js.as_array().unwrap().iter() {
279275
match *tok {
280276
Value::String(ref s) if &s[..] == "ParseError" => {
281-
let _ = sink.process_token(ParseError(Borrowed("")));
277+
let _ = sink.process_token(Token::ParseError(Borrowed("")));
282278
},
283279
_ => {
284280
let _ = sink.process_token(json_to_token(tok));

xml5ever/examples/simple_xml_tokenizer.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,7 @@ use std::io;
1616

1717
use markup5ever::buffer_queue::BufferQueue;
1818
use xml5ever::tendril::{ByteTendril, ReadExt};
19-
use xml5ever::tokenizer::{CharacterTokens, NullCharacterToken, ProcessResult, TagToken};
20-
use xml5ever::tokenizer::{CommentToken, PIToken, Pi};
21-
use xml5ever::tokenizer::{Doctype, DoctypeToken, EOFToken};
22-
use xml5ever::tokenizer::{ParseError, Token, TokenSink, XmlTokenizer};
19+
use xml5ever::tokenizer::{Doctype, Pi, ProcessResult, Token, TokenSink, XmlTokenizer};
2320

2421
struct SimpleTokenPrinter;
2522

@@ -28,29 +25,29 @@ impl TokenSink for SimpleTokenPrinter {
2825

2926
fn process_token(&self, token: Token) -> ProcessResult<()> {
3027
match token {
31-
CharacterTokens(b) => {
28+
Token::Characters(b) => {
3229
println!("TEXT: {}", &*b);
3330
},
34-
NullCharacterToken => print!("NULL"),
35-
TagToken(tag) => {
31+
Token::NullCharacter => print!("NULL"),
32+
Token::Tag(tag) => {
3633
println!("{:?} {} ", tag.kind, &*tag.name.local);
3734
},
38-
ParseError(err) => {
35+
Token::ParseError(err) => {
3936
println!("ERROR: {err}");
4037
},
41-
PIToken(Pi {
38+
Token::ProcessingInstruction(Pi {
4239
ref target,
4340
ref data,
4441
}) => {
4542
println!("PI : <?{target} {data}?>");
4643
},
47-
CommentToken(ref comment) => {
44+
Token::Comment(ref comment) => {
4845
println!("<!--{comment:?}-->");
4946
},
50-
EOFToken => {
47+
Token::EndOfFile => {
5148
println!("EOF");
5249
},
53-
DoctypeToken(Doctype {
50+
Token::Doctype(Doctype {
5451
ref name,
5552
ref public_id,
5653
..

xml5ever/examples/xml_tokenizer.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ use std::io;
1717

1818
use markup5ever::buffer_queue::BufferQueue;
1919
use xml5ever::tendril::{ByteTendril, ReadExt};
20-
use xml5ever::tokenizer::{CharacterTokens, NullCharacterToken, ProcessResult, TagToken};
21-
use xml5ever::tokenizer::{EmptyTag, EndTag, ShortTag, StartTag};
22-
use xml5ever::tokenizer::{PIToken, Pi};
23-
use xml5ever::tokenizer::{ParseError, Token, TokenSink, XmlTokenizer, XmlTokenizerOpts};
20+
use xml5ever::tokenizer::{
21+
EmptyTag, EndTag, Pi, ProcessResult, ShortTag, StartTag, Token, TokenSink, XmlTokenizer,
22+
XmlTokenizerOpts,
23+
};
2424

2525
#[derive(Clone)]
2626
struct TokenPrinter {
@@ -48,13 +48,13 @@ impl TokenSink for TokenPrinter {
4848

4949
fn process_token(&self, token: Token) -> ProcessResult<()> {
5050
match token {
51-
CharacterTokens(b) => {
51+
Token::Characters(b) => {
5252
for c in b.chars() {
5353
self.do_char(c);
5454
}
5555
},
56-
NullCharacterToken => self.do_char('\0'),
57-
TagToken(tag) => {
56+
Token::NullCharacter => self.do_char('\0'),
57+
Token::Tag(tag) => {
5858
self.is_char(false);
5959
// This is not proper HTML serialization, of course.
6060
match tag.kind {
@@ -74,11 +74,11 @@ impl TokenSink for TokenPrinter {
7474
}
7575
println!(">");
7676
},
77-
ParseError(err) => {
77+
Token::ParseError(err) => {
7878
self.is_char(false);
7979
println!("ERROR: {err}");
8080
},
81-
PIToken(Pi { target, data }) => {
81+
Token::ProcessingInstruction(Pi { target, data }) => {
8282
self.is_char(false);
8383
println!("PI : <?{target:?} {data:?}?>");
8484
},

xml5ever/src/tokenizer/interface.rs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ use crate::tokenizer::ProcessResult;
1414
use crate::{Attribute, QualName};
1515

1616
pub use self::TagKind::{EmptyTag, EndTag, ShortTag, StartTag};
17-
pub use self::Token::{CharacterTokens, EOFToken, NullCharacterToken, ParseError};
18-
pub use self::Token::{CommentToken, DoctypeToken, PIToken, TagToken};
1917

2018
/// Tag kind denotes which kind of tag did we encounter.
2119
#[derive(PartialEq, Eq, Hash, Copy, Clone, Debug)]
@@ -87,20 +85,20 @@ pub struct Pi {
8785
#[derive(PartialEq, Eq, Debug)]
8886
pub enum Token {
8987
/// Doctype token
90-
DoctypeToken(Doctype),
88+
Doctype(Doctype),
9189
/// Token tag founds. This token applies to all
9290
/// possible kinds of tags (like start, end, empty tag, etc.).
93-
TagToken(Tag),
91+
Tag(Tag),
9492
/// Processing Instruction token
95-
PIToken(Pi),
93+
ProcessingInstruction(Pi),
9694
/// Comment token.
97-
CommentToken(StrTendril),
95+
Comment(StrTendril),
9896
/// Token that represents a series of characters.
99-
CharacterTokens(StrTendril),
97+
Characters(StrTendril),
10098
/// End of File found.
101-
EOFToken,
99+
EndOfFile,
102100
/// NullCharacter encountered.
103-
NullCharacterToken,
101+
NullCharacter,
104102
/// Error happened
105103
ParseError(Cow<'static, str>),
106104
}

xml5ever/src/tokenizer/mod.rs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,9 @@ mod interface;
1212
mod qname;
1313
pub mod states;
1414

15-
pub use self::interface::{CharacterTokens, EOFToken, NullCharacterToken};
16-
pub use self::interface::{CommentToken, DoctypeToken, PIToken, TagToken};
17-
pub use self::interface::{Doctype, Pi};
18-
pub use self::interface::{EmptyTag, EndTag, ShortTag, StartTag};
19-
pub use self::interface::{ParseError, Tag, TagKind, Token, TokenSink};
15+
pub use self::interface::{
16+
Doctype, EmptyTag, EndTag, Pi, ShortTag, StartTag, Tag, TagKind, Token, TokenSink,
17+
};
2018
pub use crate::{LocalName, Namespace, Prefix};
2119

2220
use crate::tendril::StrTendril;
@@ -397,7 +395,7 @@ impl<Sink: TokenSink> XmlTokenizer<Sink> {
397395
}
398396

399397
fn emit_char(&self, c: char) {
400-
self.process_token(CharacterTokens(StrTendril::from_char(match c {
398+
self.process_token(Token::Characters(StrTendril::from_char(match c {
401399
'\0' => '\u{FFFD}',
402400
c => c,
403401
})));
@@ -445,7 +443,7 @@ impl<Sink: TokenSink> XmlTokenizer<Sink> {
445443
},
446444
}
447445

448-
let token = TagToken(Tag {
446+
let token = Token::Tag(Tag {
449447
kind: self.current_tag_kind.get(),
450448
name: qname,
451449
attrs: self.current_tag_attrs.take(),
@@ -456,12 +454,12 @@ impl<Sink: TokenSink> XmlTokenizer<Sink> {
456454

457455
// The string must not contain '\0'!
458456
fn emit_chars(&self, b: StrTendril) {
459-
self.process_token(CharacterTokens(b));
457+
self.process_token(Token::Characters(b));
460458
}
461459

462460
// Emits the current Processing Instruction
463461
fn emit_pi(&self) -> ProcessResult<<Sink as TokenSink>::Handle> {
464-
let token = PIToken(Pi {
462+
let token = Token::ProcessingInstruction(Pi {
465463
target: replace(&mut *self.current_pi_target.borrow_mut(), StrTendril::new()),
466464
data: replace(&mut *self.current_pi_data.borrow_mut(), StrTendril::new()),
467465
});
@@ -476,21 +474,21 @@ impl<Sink: TokenSink> XmlTokenizer<Sink> {
476474
}
477475

478476
fn emit_eof(&self) {
479-
self.process_token(EOFToken);
477+
self.process_token(Token::EndOfFile);
480478
}
481479

482480
fn emit_error(&self, error: Cow<'static, str>) {
483-
self.process_token(ParseError(error));
481+
self.process_token(Token::ParseError(error));
484482
}
485483

486484
fn emit_current_comment(&self) {
487485
let comment = self.current_comment.take();
488-
self.process_token(CommentToken(comment));
486+
self.process_token(Token::Comment(comment));
489487
}
490488

491489
fn emit_current_doctype(&self) {
492490
let doctype = self.current_doctype.take();
493-
self.process_token(DoctypeToken(doctype));
491+
self.process_token(Token::Doctype(doctype));
494492
}
495493

496494
fn doctype_id(&self, kind: DoctypeKind) -> RefMut<'_, Option<StrTendril>> {

xml5ever/src/tree_builder/mod.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -410,18 +410,18 @@ where
410410
fn process_token(&self, token: tokenizer::Token) -> ProcessResult<Self::Handle> {
411411
// Handle `ParseError` and `DoctypeToken`; convert everything else to the local `Token` type.
412412
let token = match token {
413-
tokenizer::ParseError(e) => {
413+
tokenizer::Token::ParseError(e) => {
414414
self.sink.parse_error(e);
415415
return ProcessResult::Done;
416416
},
417417

418-
tokenizer::DoctypeToken(d) => Token::Doctype(d),
419-
tokenizer::PIToken(instruction) => Token::Pi(instruction),
420-
tokenizer::TagToken(x) => Token::Tag(x),
421-
tokenizer::CommentToken(x) => Token::Comment(x),
422-
tokenizer::NullCharacterToken => Token::NullCharacter,
423-
tokenizer::EOFToken => Token::Eof,
424-
tokenizer::CharacterTokens(x) => Token::Characters(x),
418+
tokenizer::Token::Doctype(d) => Token::Doctype(d),
419+
tokenizer::Token::ProcessingInstruction(instruction) => Token::Pi(instruction),
420+
tokenizer::Token::Tag(x) => Token::Tag(x),
421+
tokenizer::Token::Comment(x) => Token::Comment(x),
422+
tokenizer::Token::NullCharacter => Token::NullCharacter,
423+
tokenizer::Token::EndOfFile => Token::Eof,
424+
tokenizer::Token::Characters(x) => Token::Characters(x),
425425
};
426426

427427
self.process_to_completion(token)

xml5ever/src/tree_builder/types.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ pub enum XmlPhase {
1717
End,
1818
}
1919

20-
/// A subset/refinement of `tokenizer::XToken`. Everything else is handled
20+
/// A subset/refinement of `tokenizer::Token`. Everything else is handled
2121
/// specially at the beginning of `process_token`.
2222
#[derive(PartialEq, Eq, Clone, Debug)]
2323
pub enum Token {

0 commit comments

Comments
 (0)