Skip to content

Commit 9b90752

Browse files
committed
Extract rcdom into its own crate with no maintenance guarantees.
1 parent cf07a98 commit 9b90752

File tree

19 files changed

+96
-39
lines changed

19 files changed

+96
-39
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22
members = [
33
"markup5ever",
44
"html5ever",
5+
"rcdom",
56
"xml5ever"
67
]

html5ever/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ serde_json = "1.0"
3737
rustc-test = "0.3"
3838
typed-arena = "1.3.0"
3939
criterion = "0.3"
40+
markup5ever_rcdom = { version = "0.1", path = "../rcdom" }
4041

4142
[build-dependencies]
4243
quote = "1"

html5ever/examples/html2html.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,16 @@
1616
//! where htmlparser-1.4.jar comes from http://about.validator.nu/htmlparser/
1717
1818
extern crate html5ever;
19+
extern crate markup5ever_rcdom as rcdom;
1920

2021
use std::default::Default;
2122
use std::io::{self, Write};
2223

2324
use html5ever::driver::ParseOpts;
24-
use html5ever::rcdom::RcDom;
2525
use html5ever::tendril::TendrilSink;
2626
use html5ever::tree_builder::TreeBuilderOpts;
2727
use html5ever::{parse_document, serialize};
28+
use rcdom::{RcDom, SerializableHandle};
2829

2930
fn main() {
3031
let opts = ParseOpts {
@@ -45,7 +46,8 @@ fn main() {
4546
.write_all(b"<!DOCTYPE html>\n")
4647
.ok()
4748
.expect("writing DOCTYPE failed");
48-
serialize(&mut io::stdout(), &dom.document, Default::default())
49+
let document: SerializableHandle = dom.document.clone().into();
50+
serialize(&mut io::stdout(), &document, Default::default())
4951
.ok()
5052
.expect("serialization failed");
5153
}

html5ever/examples/print-rcdom.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,16 @@
99

1010
#[macro_use]
1111
extern crate html5ever;
12+
extern crate markup5ever_rcdom as rcdom;
1213

1314
use std::default::Default;
1415
use std::io;
1516
use std::iter::repeat;
1617
use std::string::String;
1718

1819
use html5ever::parse_document;
19-
use html5ever::rcdom::{Handle, NodeData, RcDom};
2020
use html5ever::tendril::TendrilSink;
21+
use rcdom::{Handle, NodeData, RcDom};
2122

2223
// This is not proper HTML serialization, of course.
2324

html5ever/src/driver.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,18 +137,20 @@ impl<Sink: TreeSink> Parser<Sink> {
137137

138138
#[cfg(test)]
139139
mod tests {
140+
extern crate markup5ever_rcdom;
140141
use super::*;
141-
use crate::rcdom::RcDom;
142+
use self::markup5ever_rcdom::{RcDom, SerializableHandle};
142143
use crate::serialize::serialize;
143-
use crate::tendril::TendrilSink;
144+
use tendril::TendrilSink;
144145

145146
#[test]
146147
fn from_utf8() {
147148
let dom = parse_document(RcDom::default(), ParseOpts::default())
148149
.from_utf8()
149150
.one("<title>Test".as_bytes());
150151
let mut serialized = Vec::new();
151-
serialize(&mut serialized, &dom.document, Default::default()).unwrap();
152+
let document: SerializableHandle = dom.document.clone().into();
153+
serialize(&mut serialized, &document, Default::default()).unwrap();
152154
assert_eq!(
153155
String::from_utf8(serialized).unwrap().replace(" ", ""),
154156
"<html><head><title>Test</title></head><body></body></html>"

html5ever/src/tree_builder/mod.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1683,9 +1683,10 @@ where
16831683
#[cfg(test)]
16841684
#[allow(non_snake_case)]
16851685
mod test {
1686-
use crate::interface::{AppendNode, AppendText, NodeOrText};
1687-
use crate::interface::{ElementFlags, Tracer, TreeSink};
1688-
use crate::interface::{LimitedQuirks, NoQuirks, Quirks, QuirksMode};
1686+
extern crate markup5ever_rcdom as rcdom;
1687+
use markup5ever::interface::{AppendNode, AppendText, NodeOrText};
1688+
use markup5ever::interface::{ElementFlags, Tracer, TreeSink};
1689+
use markup5ever::interface::{LimitedQuirks, NoQuirks, Quirks, QuirksMode};
16891690

16901691
use super::types::*;
16911692

@@ -1698,6 +1699,7 @@ mod test {
16981699
use crate::tokenizer::states as tok_state;
16991700
use crate::tokenizer::{Doctype, StartTag, Tag, TokenSink};
17001701
use crate::tokenizer::{Tokenizer, TokenizerOpts};
1702+
use crate::driver::*;
17011703

17021704
use crate::util::str::is_ascii_whitespace;
17031705

@@ -1708,9 +1710,8 @@ mod test {
17081710
use std::mem::replace;
17091711

17101712
use super::{TreeBuilder, TreeBuilderOpts};
1711-
use crate::driver::*;
1712-
use crate::{Attribute, local_name, namespace_url, ns};
1713-
use crate::rcdom::{Handle, Node, NodeData, RcDom};
1713+
use markup5ever::{Attribute, local_name, namespace_url, ns};
1714+
use self::rcdom::{Handle, Node, NodeData, RcDom};
17141715

17151716
pub struct LineCountingDOM {
17161717
pub line_vec: Vec<(QualName, u64)>,

html5ever/tests/serializer.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,16 @@
99

1010
#[macro_use]
1111
extern crate html5ever;
12+
extern crate markup5ever_rcdom as rcdom;
1213

1314
use std::default::Default;
1415

1516
use html5ever::driver::ParseOpts;
16-
use html5ever::rcdom::RcDom;
1717
use html5ever::serialize::{Serialize, SerializeOpts, Serializer, TraversalScope};
1818
use html5ever::tendril::{SliceExt, StrTendril, TendrilSink};
1919
use html5ever::tokenizer::{TagKind, Token, TokenSink, TokenSinkResult, Tokenizer};
2020
use html5ever::{parse_document, parse_fragment, serialize, QualName};
21+
use rcdom::{RcDom, SerializableHandle};
2122

2223
use std::io;
2324

@@ -98,10 +99,10 @@ fn parse_and_serialize(input: StrTendril) -> StrTendril {
9899
vec![],
99100
)
100101
.one(input);
101-
let inner = &dom.document.children.borrow()[0];
102+
let inner: SerializableHandle = dom.document.children.borrow()[0].clone().into();
102103

103104
let mut result = vec![];
104-
serialize(&mut result, inner, Default::default()).unwrap();
105+
serialize(&mut result, &inner, Default::default()).unwrap();
105106
StrTendril::try_from_byte_slice(&result).unwrap()
106107
}
107108

@@ -242,7 +243,8 @@ fn doctype() {
242243
let dom = parse_document(RcDom::default(), ParseOpts::default()).one("<!doctype html>");
243244
dom.document.children.borrow_mut().truncate(1); // Remove <html>
244245
let mut result = vec![];
245-
serialize(&mut result, &dom.document, Default::default()).unwrap();
246+
let document: SerializableHandle = dom.document.clone().into();
247+
serialize(&mut result, &document, Default::default()).unwrap();
246248
assert_eq!(String::from_utf8(result).unwrap(), "<!DOCTYPE html>");
247249
}
248250

@@ -259,6 +261,7 @@ fn deep_tree() {
259261
let document = &dom.document;
260262
let opts = SerializeOpts::default();
261263
let mut ret_val = Vec::new();
262-
serialize(&mut ret_val, document, opts)
264+
let document: SerializableHandle = dom.document.clone().into();
265+
serialize(&mut ret_val, &document, opts)
263266
.expect("Writing to a string shouldn't fail (expect on OOM)");
264267
}

html5ever/tests/tree_builder.rs

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

10+
extern crate markup5ever_rcdom as rcdom;
1011
extern crate rustc_test as test;
1112
#[macro_use]
1213
extern crate html5ever;
@@ -24,10 +25,10 @@ use std::path::Path;
2425
use std::{env, fs, io};
2526
use test::{DynTestName, TestDesc, TestDescAndFn, TestFn};
2627

27-
use html5ever::rcdom::{Handle, NodeData, RcDom};
2828
use html5ever::tendril::{StrTendril, TendrilSink};
2929
use html5ever::{parse_document, parse_fragment, ParseOpts};
3030
use html5ever::{LocalName, QualName};
31+
use rcdom::{Handle, NodeData, RcDom};
3132

3233
fn parse_tests<It: Iterator<Item = String>>(mut lines: It) -> Vec<HashMap<String, String>> {
3334
let mut tests = vec![];

markup5ever/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,5 @@ serde = "1.0"
2626
serde_derive = "1.0"
2727
serde_json = "1.0"
2828

29+
[dev-dependencies]
30+
markup5ever_rcdom = { version = "0.1", path = "../rcdom" }

markup5ever/interface/tree_builder.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,10 @@ pub struct ElementFlags {
8383
///
8484
/// ```
8585
/// # #[macro_use] extern crate markup5ever;
86+
/// # extern crate markup5ever_rcdom as rcdom;
8687
///
8788
/// # fn main() {
88-
/// use markup5ever::{rcdom, QualName, Attribute};
89+
/// use markup5ever::{QualName, Attribute};
8990
/// use markup5ever::interface::create_element;
9091
///
9192
/// let mut dom = rcdom::RcDom::default();

0 commit comments

Comments
 (0)