pub(crate) mod comments;
pub(crate) mod content;
pub(crate) mod discard;
pub(crate) mod metadata;
pub(crate) mod utils;
use crate::dom::{Document, NodeId};
pub(crate) type Rule = fn(&Document, NodeId) -> bool;
pub(crate) fn query(doc: &Document, root: NodeId, rules: &[Rule]) -> Option<NodeId> {
for id in doc.get_elements_by_tag_name(root, "*") {
for rule in rules {
if rule(doc, id) {
return Some(id);
}
}
}
None
}
pub(crate) fn query_all(doc: &Document, root: NodeId, rules: &[Rule]) -> Vec<NodeId> {
let mut matches = Vec::new();
for id in doc.get_elements_by_tag_name(root, "*") {
for rule in rules {
if rule(doc, id) {
matches.push(id);
break;
}
}
}
matches
}