diff --git a/html5test/Cargo.lock b/html5test/Cargo.lock index cdcca92..1288027 100644 --- a/html5test/Cargo.lock +++ b/html5test/Cargo.lock @@ -47,6 +47,7 @@ version = "0.1.0" dependencies = [ "html5ever", "markup5ever_rcdom", + "textwrap", ] [[package]] @@ -239,6 +240,12 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cbce6d4507c7e4a3962091436e56e95290cb71fa302d0d270e32130b75fbff27" +[[package]] +name = "smawk" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043" + [[package]] name = "string_cache" version = "0.8.1" @@ -286,6 +293,16 @@ dependencies = [ "utf-8", ] +[[package]] +name = "textwrap" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd05616119e612a8041ef58f2b578906cc2531a6069047ae092cfb86a325d835" +dependencies = [ + "smawk", + "unicode-width", +] + [[package]] name = "time" version = "0.1.44" @@ -297,6 +314,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "unicode-width" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" + [[package]] name = "unicode-xid" version = "0.2.1" diff --git a/html5test/Cargo.toml b/html5test/Cargo.toml index 6ad1c47..5dc1170 100644 --- a/html5test/Cargo.toml +++ b/html5test/Cargo.toml @@ -9,3 +9,4 @@ edition = "2018" [dependencies] html5ever = "0.25" markup5ever_rcdom = "0.1" +textwrap = "0.13" diff --git a/html5test/src/main.rs b/html5test/src/main.rs index 5b9793c..a676559 100644 --- a/html5test/src/main.rs +++ b/html5test/src/main.rs @@ -5,6 +5,8 @@ use markup5ever_rcdom::NodeData; use markup5ever_rcdom::RcDom; use std::borrow::Borrow; use std::default::Default; +use textwrap::fill; +use textwrap::Options; fn go_children(input: &Handle, result: &mut String) { for child in input.children.borrow().iter() { @@ -41,8 +43,12 @@ fn walk(input: &Handle, result: &mut String) { .iter() .find(|attr| attr.name.local.to_string() == "class"); if let Some(class) = classes { - if !class.value.to_string().contains("invisible") { + let classes = class.value.to_string(); + if !classes.contains("invisible") { go_children(input, result); + if classes.contains("ellipsis") { + result.push_str("..."); + } } } else { go_children(input, result); @@ -98,5 +104,8 @@ fn main() { let mut result = String::new(); walk(&dom.document, &mut result); println!("---------------------------------"); - println!("{}", result); + let options = Options::new(70) + .initial_indent(" ") + .subsequent_indent(" "); + println!("{}", fill(&result.trim(), &options)); }