Skip to content

Commit f026acf

Browse files
committed
Merge pull request #136 from SimonSapin/doctype-serialization
Fix doctype serialization; r=Ms2ger
2 parents 7ddaa59 + f32f748 commit f026acf

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

src/serialize/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ impl<'wr, Wr: Write> Serializer<'wr, Wr> {
223223
pub fn write_doctype(&mut self, name: &str) -> io::Result<()> {
224224
try!(self.writer.write_all(b"<!DOCTYPE "));
225225
try!(self.writer.write_all(name.as_bytes()));
226-
self.writer.write_all(b"\n")
226+
self.writer.write_all(b">\n")
227227
}
228228

229229
pub fn write_processing_instruction(&mut self, target: &str, data: &str) -> io::Result<()> {

tests/serializer.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use std::default::Default;
1818
use std::borrow::ToOwned;
1919

2020
use html5ever::driver::ParseOpts;
21-
use html5ever::{parse_fragment, one_input, serialize};
21+
use html5ever::{parse_fragment, parse, one_input, serialize};
2222
use html5ever_dom_sink::rcdom::RcDom;
2323

2424
fn parse_and_serialize(input: String) -> String {
@@ -97,3 +97,12 @@ test!(attr_ns_1, r#"<svg xmlns="bleh"></svg>"#);
9797
test!(attr_ns_2, r#"<svg xmlns:foo="bleh"></svg>"#);
9898
test!(attr_ns_3, r#"<svg xmlns:xlink="bleh"></svg>"#);
9999
test!(attr_ns_4, r#"<svg xlink:href="bleh"></svg>"#);
100+
101+
#[test]
102+
fn doctype() {
103+
let dom: RcDom = parse(one_input("<!doctype html>".to_owned()), ParseOpts::default());
104+
dom.document.borrow_mut().children.truncate(1); // Remove <html>
105+
let mut result = vec![];
106+
serialize(&mut result, &dom.document, Default::default()).unwrap();
107+
assert_eq!(String::from_utf8(result).unwrap(), "<!DOCTYPE html>\n");
108+
}

0 commit comments

Comments
 (0)