From 21358c663a9b1a330c22b3a186034e4d38f985f6 Mon Sep 17 00:00:00 2001 From: Malcolm Diller Date: Tue, 14 Dec 2021 22:46:49 -0800 Subject: [PATCH] Don't Draw Hidden Sections (#24) * added a simple snippet for hiding sections that are marked as display none * updated the displaynone to work with the new implementation --- lib/src/converter/visit.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/src/converter/visit.rs b/lib/src/converter/visit.rs index b5f8ac0..03d575d 100644 --- a/lib/src/converter/visit.rs +++ b/lib/src/converter/visit.rs @@ -4,15 +4,19 @@ pub trait XmlVisitor { fn visit(&mut self, node: Node); } +pub fn is_valid_node(node: &Node) -> bool { + return node.is_element() && !node.attribute("style").unwrap_or_default().contains("display:none"); +} + pub fn depth_first_visit(doc: &Document, visitor: &mut impl XmlVisitor) { let mut stack = doc .root() .children() .rev() - .filter(|x| x.is_element()) + .filter(|x| is_valid_node(x)) .collect::>(); while let Some(node) = stack.pop() { visitor.visit(node); - stack.extend(node.children().rev().filter(|x| x.is_element())); + stack.extend(node.children().rev().filter(|x| is_valid_node(x))); } }