use markup5ever_rcdom::NodeData;
use crate::{
Element,
element_handler::{HandlerResult, Handlers},
serialize_if_faithful,
text_util::concat_strings,
};
pub(super) fn span_handler(handlers: &dyn Handlers, element: Element) -> Option<HandlerResult> {
if element.attrs.len() == 1
&& let attr = &element.attrs[0]
&& *attr.name.local == *"class"
&& let children = element.node.children.borrow()
&& children.len() == 1
&& let NodeData::Text { contents } = &children[0].data
{
if *attr.value == *"math math-inline" {
return Some(concat_strings!("$", contents.borrow().to_string(), "$").into());
}
if *attr.value == *"math math-display" {
return Some(concat_strings!("$$", contents.borrow().to_string(), "$$").into());
}
}
serialize_if_faithful!(handlers, element, -1);
let content = handlers.walk_children(element.node).content;
let content = content.trim_matches('\n');
Some(content.into())
}