Skip to content

Commit 39a2000

Browse files
committed
Don't import xml5ever enums into the global namespace
This is mostly the same as servo#593 but for xml5ever. Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
1 parent 8b92f73 commit 39a2000

File tree

7 files changed

+74
-72
lines changed

7 files changed

+74
-72
lines changed

rcdom/tests/xml-tokenizer.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use markup5ever::buffer_queue::BufferQueue;
2323
use xml5ever::tendril::{SliceExt, StrTendril};
2424
use xml5ever::tokenizer::{CharacterTokens, Token, TokenSink};
2525
use xml5ever::tokenizer::{CommentToken, EmptyTag, EndTag, ShortTag, StartTag, Tag};
26-
use xml5ever::tokenizer::{Doctype, DoctypeToken, PIToken, Pi};
26+
use xml5ever::tokenizer::{Doctype, DoctypeToken, PIToken, ProcessingInstruction};
2727
use xml5ever::tokenizer::{EOFToken, XmlTokenizer, XmlTokenizerOpts};
2828
use xml5ever::tokenizer::{NullCharacterToken, ParseError, TagToken};
2929
use xml5ever::{namespace_url, ns, Attribute, LocalName, QualName};
@@ -253,7 +253,7 @@ fn json_to_token(js: &Value) -> Token {
253253

254254
"Character" => CharacterTokens(args[0].get_tendril()),
255255

256-
"PI" => PIToken(Pi {
256+
"PI" => PIToken(ProcessingInstruction {
257257
target: args[0].get_tendril(),
258258
data: args[1].get_tendril(),
259259
}),

xml5ever/examples/simple_xml_tokenizer.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use std::io;
1717
use markup5ever::buffer_queue::BufferQueue;
1818
use xml5ever::tendril::{ByteTendril, ReadExt};
1919
use xml5ever::tokenizer::{CharacterTokens, NullCharacterToken, ProcessResult, TagToken};
20-
use xml5ever::tokenizer::{CommentToken, PIToken, Pi};
20+
use xml5ever::tokenizer::{CommentToken, PIToken, ProcessingInstruction};
2121
use xml5ever::tokenizer::{Doctype, DoctypeToken, EOFToken};
2222
use xml5ever::tokenizer::{ParseError, Token, TokenSink, XmlTokenizer};
2323

@@ -38,7 +38,7 @@ impl TokenSink for SimpleTokenPrinter {
3838
ParseError(err) => {
3939
println!("ERROR: {err}");
4040
},
41-
PIToken(Pi {
41+
PIToken(ProcessingInstruction {
4242
ref target,
4343
ref data,
4444
}) => {

xml5ever/examples/xml_tokenizer.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use markup5ever::buffer_queue::BufferQueue;
1919
use xml5ever::tendril::{ByteTendril, ReadExt};
2020
use xml5ever::tokenizer::{CharacterTokens, NullCharacterToken, ProcessResult, TagToken};
2121
use xml5ever::tokenizer::{EmptyTag, EndTag, ShortTag, StartTag};
22-
use xml5ever::tokenizer::{PIToken, Pi};
22+
use xml5ever::tokenizer::{PIToken, ProcessingInstruction};
2323
use xml5ever::tokenizer::{ParseError, Token, TokenSink, XmlTokenizer, XmlTokenizerOpts};
2424

2525
#[derive(Clone)]
@@ -78,7 +78,7 @@ impl TokenSink for TokenPrinter {
7878
self.is_char(false);
7979
println!("ERROR: {err}");
8080
},
81-
PIToken(Pi { target, data }) => {
81+
PIToken(ProcessingInstruction { target, data }) => {
8282
self.is_char(false);
8383
println!("PI : <?{target:?} {data:?}?>");
8484
},

xml5ever/src/tokenizer/interface.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ pub struct Doctype {
7575

7676
/// A ProcessingInstruction token.
7777
#[derive(PartialEq, Eq, Clone, Debug)]
78-
pub struct Pi {
78+
pub struct ProcessingInstruction {
7979
/// What is the name of processing instruction.
8080
pub target: StrTendril,
8181

@@ -92,7 +92,7 @@ pub enum Token {
9292
/// possible kinds of tags (like start, end, empty tag, etc.).
9393
TagToken(Tag),
9494
/// Processing Instruction token
95-
PIToken(Pi),
95+
PIToken(ProcessingInstruction),
9696
/// Comment token.
9797
CommentToken(StrTendril),
9898
/// Token that represents a series of characters.

xml5ever/src/tokenizer/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pub mod states;
1414

1515
pub use self::interface::{CharacterTokens, EOFToken, NullCharacterToken};
1616
pub use self::interface::{CommentToken, DoctypeToken, PIToken, TagToken};
17-
pub use self::interface::{Doctype, Pi};
17+
pub use self::interface::{Doctype, ProcessingInstruction};
1818
pub use self::interface::{EmptyTag, EndTag, ShortTag, StartTag};
1919
pub use self::interface::{ParseError, Tag, TagKind, Token, TokenSink};
2020
pub use crate::{LocalName, Namespace, Prefix};
@@ -463,7 +463,7 @@ impl<Sink: TokenSink> XmlTokenizer<Sink> {
463463

464464
// Emits the current Processing Instruction
465465
fn emit_pi(&self) -> ProcessResult<<Sink as TokenSink>::Handle> {
466-
let token = PIToken(Pi {
466+
let token = PIToken(ProcessingInstruction {
467467
target: replace(&mut *self.current_pi_target.borrow_mut(), StrTendril::new()),
468468
data: replace(&mut *self.current_pi_data.borrow_mut(), StrTendril::new()),
469469
});

xml5ever/src/tree_builder/mod.rs

Lines changed: 62 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use self::types::*;
2525
use crate::interface::{self, create_element, AppendNode, Attribute, QualName};
2626
use crate::interface::{AppendText, ExpandedName};
2727
use crate::tokenizer::{self, EndTag, ProcessResult, StartTag, Tag, TokenSink};
28-
use crate::tokenizer::{Doctype, EmptyTag, Pi, ShortTag};
28+
use crate::tokenizer::{Doctype, EmptyTag, ProcessingInstruction, ShortTag};
2929
use crate::{LocalName, Namespace, Prefix};
3030

3131
use crate::tendril::{StrTendril, Tendril};
@@ -214,7 +214,7 @@ where
214214
curr_elem: RefCell::new(None),
215215
namespace_stack: RefCell::new(NamespaceMapStack::new()),
216216
current_namespace: RefCell::new(NamespaceMap::empty()),
217-
phase: Cell::new(Start),
217+
phase: Cell::new(XmlPhase::Start),
218218
}
219219
}
220220

@@ -415,13 +415,13 @@ where
415415
return ProcessResult::Done;
416416
},
417417

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

427427
self.process_to_completion(token)
@@ -466,7 +466,7 @@ where
466466
let child = create_element(&self.sink, tag.name, tag.attrs);
467467
self.insert_appropriately(AppendNode(child.clone()));
468468
self.sink.pop(&child);
469-
Done
469+
XmlProcessResult::Done
470470
}
471471

472472
fn append_tag_to_doc(&self, tag: Tag) -> Handle {
@@ -480,21 +480,21 @@ where
480480
fn add_to_open_elems(&self, el: Handle) -> XmlProcessResult<Handle> {
481481
self.open_elems.borrow_mut().push(el);
482482

483-
Done
483+
XmlProcessResult::Done
484484
}
485485

486486
fn append_comment_to_doc(&self, text: StrTendril) -> XmlProcessResult<Handle> {
487487
let comment = self.sink.create_comment(text);
488488
self.sink.append(&self.doc_handle, AppendNode(comment));
489-
Done
489+
XmlProcessResult::Done
490490
}
491491

492492
fn append_comment_to_tag(&self, text: StrTendril) -> XmlProcessResult<Handle> {
493493
let open_elems = self.open_elems.borrow();
494494
let target = current_node(&open_elems);
495495
let comment = self.sink.create_comment(text);
496496
self.sink.append(target, AppendNode(comment));
497-
Done
497+
XmlProcessResult::Done
498498
}
499499

500500
fn append_doctype_to_doc(&self, doctype: Doctype) -> XmlProcessResult<Handle> {
@@ -509,26 +509,26 @@ where
509509
get_tendril(doctype.public_id),
510510
get_tendril(doctype.system_id),
511511
);
512-
Done
512+
XmlProcessResult::Done
513513
}
514514

515-
fn append_pi_to_doc(&self, pi: Pi) -> XmlProcessResult<Handle> {
515+
fn append_pi_to_doc(&self, pi: ProcessingInstruction) -> XmlProcessResult<Handle> {
516516
let pi = self.sink.create_pi(pi.target, pi.data);
517517
self.sink.append(&self.doc_handle, AppendNode(pi));
518-
Done
518+
XmlProcessResult::Done
519519
}
520520

521-
fn append_pi_to_tag(&self, pi: Pi) -> XmlProcessResult<Handle> {
521+
fn append_pi_to_tag(&self, pi: ProcessingInstruction) -> XmlProcessResult<Handle> {
522522
let open_elems = self.open_elems.borrow();
523523
let target = current_node(&open_elems);
524524
let pi = self.sink.create_pi(pi.target, pi.data);
525525
self.sink.append(target, AppendNode(pi));
526-
Done
526+
XmlProcessResult::Done
527527
}
528528

529529
fn append_text(&self, chars: StrTendril) -> XmlProcessResult<Handle> {
530530
self.insert_appropriately(AppendText(chars));
531-
Done
531+
XmlProcessResult::Done
532532
}
533533

534534
fn tag_in_open_elems(&self, tag: &Tag) -> bool {
@@ -578,7 +578,7 @@ where
578578
self.pop();
579579
}
580580

581-
Done
581+
XmlProcessResult::Done
582582
}
583583

584584
fn no_open_elems(&self) -> bool {
@@ -598,7 +598,7 @@ where
598598

599599
fn stop_parsing(&self) -> XmlProcessResult<Handle> {
600600
warn!("stop_parsing for XML5 not implemented, full speed ahead!");
601-
Done
601+
XmlProcessResult::Done
602602
}
603603
}
604604

@@ -617,8 +617,8 @@ where
617617
self.debug_step(mode, &token);
618618

619619
match mode {
620-
Start => match token {
621-
Tag(Tag {
620+
XmlPhase::Start => match token {
621+
Token::Tag(Tag {
622622
kind: StartTag,
623623
name,
624624
attrs,
@@ -632,11 +632,11 @@ where
632632
self.process_namespaces(&mut tag);
633633
tag
634634
};
635-
self.phase.set(Main);
635+
self.phase.set(XmlPhase::Main);
636636
let handle = self.append_tag_to_doc(tag);
637637
self.add_to_open_elems(handle)
638638
},
639-
Tag(Tag {
639+
Token::Tag(Tag {
640640
kind: EmptyTag,
641641
name,
642642
attrs,
@@ -650,32 +650,34 @@ where
650650
self.process_namespaces(&mut tag);
651651
tag
652652
};
653-
self.phase.set(End);
653+
self.phase.set(XmlPhase::End);
654654
let handle = self.append_tag_to_doc(tag);
655655
self.sink.pop(&handle);
656-
Done
656+
XmlProcessResult::Done
657657
},
658-
Comment(comment) => self.append_comment_to_doc(comment),
659-
Pi(pi) => self.append_pi_to_doc(pi),
660-
Characters(ref chars) if !any_not_whitespace(chars) => Done,
661-
Eof => {
658+
Token::Comment(comment) => self.append_comment_to_doc(comment),
659+
Token::ProcessingInstruction(pi) => self.append_pi_to_doc(pi),
660+
Token::Characters(ref chars) if !any_not_whitespace(chars) => {
661+
XmlProcessResult::Done
662+
},
663+
Token::Eof => {
662664
self.sink
663665
.parse_error(Borrowed("Unexpected EOF in start phase"));
664-
Reprocess(End, Eof)
666+
XmlProcessResult::Reprocess(XmlPhase::End, Token::Eof)
665667
},
666-
Doctype(d) => {
668+
Token::Doctype(d) => {
667669
self.append_doctype_to_doc(d);
668-
Done
670+
XmlProcessResult::Done
669671
},
670672
_ => {
671673
self.sink
672674
.parse_error(Borrowed("Unexpected element in start phase"));
673-
Done
675+
XmlProcessResult::Done
674676
},
675677
},
676-
Main => match token {
677-
Characters(chs) => self.append_text(chs),
678-
Tag(Tag {
678+
XmlPhase::Main => match token {
679+
Token::Characters(chs) => self.append_text(chs),
680+
Token::Tag(Tag {
679681
kind: StartTag,
680682
name,
681683
attrs,
@@ -691,7 +693,7 @@ where
691693
};
692694
self.insert_tag(tag)
693695
},
694-
Tag(Tag {
696+
Token::Tag(Tag {
695697
kind: EmptyTag,
696698
name,
697699
attrs,
@@ -714,7 +716,7 @@ where
714716
self.append_tag(tag)
715717
}
716718
},
717-
Tag(Tag {
719+
Token::Tag(Tag {
718720
kind: EndTag,
719721
name,
720722
attrs,
@@ -732,41 +734,45 @@ where
732734
let script = current_node(&self.open_elems.borrow()).clone();
733735
self.close_tag(tag);
734736
if self.no_open_elems() {
735-
self.phase.set(End);
737+
self.phase.set(XmlPhase::End);
736738
}
737739
return XmlProcessResult::Script(script);
738740
}
739741
let retval = self.close_tag(tag);
740742
if self.no_open_elems() {
741-
self.phase.set(End);
743+
self.phase.set(XmlPhase::End);
742744
}
743745
retval
744746
},
745-
Tag(Tag { kind: ShortTag, .. }) => {
747+
Token::Tag(Tag { kind: ShortTag, .. }) => {
746748
self.pop();
747749
if self.no_open_elems() {
748-
self.phase.set(End);
750+
self.phase.set(XmlPhase::End);
749751
}
750-
Done
752+
XmlProcessResult::Done
753+
},
754+
Token::Comment(comment) => self.append_comment_to_tag(comment),
755+
Token::ProcessingInstruction(pi) => self.append_pi_to_tag(pi),
756+
Token::Eof | Token::NullCharacter => {
757+
XmlProcessResult::Reprocess(XmlPhase::End, Token::Eof)
751758
},
752-
Comment(comment) => self.append_comment_to_tag(comment),
753-
Pi(pi) => self.append_pi_to_tag(pi),
754-
Eof | NullCharacter => Reprocess(End, Eof),
755-
Doctype(_) => {
759+
Token::Doctype(_) => {
756760
self.sink
757761
.parse_error(Borrowed("Unexpected element in main phase"));
758-
Done
762+
XmlProcessResult::Done
759763
},
760764
},
761-
End => match token {
762-
Comment(comment) => self.append_comment_to_doc(comment),
763-
Pi(pi) => self.append_pi_to_doc(pi),
764-
Characters(ref chars) if !any_not_whitespace(chars) => Done,
765-
Eof => self.stop_parsing(),
765+
XmlPhase::End => match token {
766+
Token::Comment(comment) => self.append_comment_to_doc(comment),
767+
Token::ProcessingInstruction(pi) => self.append_pi_to_doc(pi),
768+
Token::Characters(ref chars) if !any_not_whitespace(chars) => {
769+
XmlProcessResult::Done
770+
},
771+
Token::Eof => self.stop_parsing(),
766772
_ => {
767773
self.sink
768774
.parse_error(Borrowed("Unexpected element in end phase"));
769-
Done
775+
XmlProcessResult::Done
770776
},
771777
},
772778
}

xml5ever/src/tree_builder/types.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,8 @@
77
// option. This file may not be copied, modified, or distributed
88
// except according to those terms.
99

10-
pub use self::Token::*;
11-
pub use self::XmlPhase::*;
12-
pub use self::XmlProcessResult::*;
13-
1410
use crate::tendril::StrTendril;
15-
use crate::tokenizer::{Doctype, Pi, Tag};
11+
use crate::tokenizer::{Doctype, ProcessingInstruction, Tag};
1612

1713
#[derive(PartialEq, Eq, Copy, Clone, Debug)]
1814
pub enum XmlPhase {
@@ -29,7 +25,7 @@ pub enum Token {
2925
Doctype(Doctype),
3026
Comment(StrTendril),
3127
Characters(StrTendril),
32-
Pi(Pi),
28+
ProcessingInstruction(ProcessingInstruction),
3329
NullCharacter,
3430
Eof,
3531
}

0 commit comments

Comments
 (0)