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 => "{}", format_matrix(inner)) } }) .collect() }