in rust/src/main.rs [236:282]
fn transform_inside(node: NodeRef) {
let local_attrs: kuchiki::Attributes;
if let kuchiki::NodeData::Element(x) = node.data() {
local_attrs = x.clone().attributes.into_inner();
{
let mut x_attr = (x.attributes).borrow_mut();
for (key, value) in x_attr.clone().map.into_iter() {
// Remove all parameters that are not schema.org related
if !(key.local.starts_with("item")
|| key.local.starts_with("content")
|| key.local.starts_with("date"))
{
x_attr.remove(key.local);
} else {
if value.value.len() < 1 {
x_attr.remove(key.local);
}
}
}
}
// Clean indide schema.org/Question tags
if local_attrs.contains("itemprop") && !local_attrs.contains("itemtype") {
if local_attrs.get("itemprop").unwrap() == "url" {
node.detach();
} else {
inside_props(node.clone());
remove_empty_nodes(node.clone());
return;
}
}
}
// Post order traversal
for child in node.children() {
transform_inside(child.clone());
}
if let kuchiki::NodeData::Element(x) = node.data() {
let x_attr = x.clone().attributes.into_inner();
if !x_attr.contains("itemtype") && !x_attr.contains("itemprop") {
for child in node.children() {
node.insert_after(child)
}
node.detach();
}
} else {
node.detach();
}
}