use super::{MessageContent, Styled}; pub fn convert_matrix(message: &str) -> MessageContent { todo!(); } pub fn format_matrix(message_content: &MessageContent) -> String { message_content .iter() .map(|component| match component { Styled::Plain(text) => html_escape::encode_text(text).to_string(), Styled::Link { target, text } => format!( r#"{}"#, html_escape::encode_quoted_attribute(target), format_matrix(text) ), Styled::Italic(inner) => format!("{}", format_matrix(inner)), Styled::Bold(inner) => format!("{}", format_matrix(inner)), Styled::Strikethrough(inner) => format!("{}", format_matrix(inner)), Styled::Underline(inner) => format!("{}", format_matrix(inner)), Styled::Code(code) => format!("{}", html_escape::encode_text(code)), Styled::CodeBlock { lang, source } => { format!( r#"
{}
"#, lang.as_ref() .map(|lang| format!( r#" class="language-{}""#, html_escape::encode_quoted_attribute(lang) )) .unwrap_or("".to_string()), source, ) } Styled::Spoiler { reason, content } => format!( "{}", reason .as_ref() .map(|reason| format!(r#"="{}""#, html_escape::encode_quoted_attribute(reason))) .unwrap_or("".to_string()), format_matrix(content) ), Styled::HardBreak => "
".to_string(), Styled::BlockQuote(inner) => { format!("
{}
", format_matrix(inner)) } }) .collect() }