diff options
author | metamuffin <metamuffin@disroot.org> | 2022-09-25 16:03:27 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-09-25 16:03:27 +0200 |
commit | 136acb9049ff56b130a6071e403ffbc8b39f19b6 (patch) | |
tree | ffe5a98948779dcaba4f40dae312027e69c9f6af /code/src/markdown.rs | |
parent | 2403a9a3599c4b77d33fb6de5f438e53e19412ff (diff) | |
download | metamuffin-blog-136acb9049ff56b130a6071e403ffbc8b39f19b6.tar metamuffin-blog-136acb9049ff56b130a6071e403ffbc8b39f19b6.tar.bz2 metamuffin-blog-136acb9049ff56b130a6071e403ffbc8b39f19b6.tar.zst |
move files
Diffstat (limited to 'code/src/markdown.rs')
-rw-r--r-- | code/src/markdown.rs | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/code/src/markdown.rs b/code/src/markdown.rs deleted file mode 100644 index 22934c5..0000000 --- a/code/src/markdown.rs +++ /dev/null @@ -1,81 +0,0 @@ -use markdown::{Block, ListItem, Span}; - -use crate::syntax_highlight::syntax_highlight; - -pub fn span_to_html(ss: Vec<Span>) -> String { - let mut out = String::new(); - for s in ss { - out += match s { - Span::Break => format!("<br/>"), - Span::Text(t) => escape(&t), - Span::Code(c) => format!("<code>{}</code>", escape(&c)), - Span::Link(text, url, _) => { - format!("<a href=\"{}\">{}</a>", escape(&url), escape(&text)) - } - Span::Image(_, _, _) => todo!(), - Span::Emphasis(c) => format!("<i>{}</i>", span_to_html(c)), - Span::Strong(c) => format!("<b>{}</b>", span_to_html(c)), - } - .as_str() - } - out -} -pub fn blocks_to_html(blocks: Vec<Block>) -> String { - let mut out = String::new(); - for e in blocks { - out += match e { - Block::Header(text, level) => { - format!("<h{level}>{}</h{level}>", span_to_html(text)) - } - Block::Paragraph(p) => format!("<p>{}</p>", span_to_html(p)), - Block::Blockquote(q) => format!("<quote>{}</quote>", blocks_to_html(q)), - Block::CodeBlock(syntax, content) => { - if let Some(s) = &syntax { - format!("<pre>{}</pre>", syntax_highlight(s, &content)) - } else { - format!("<pre>{}</pre>", escape(&content)) - } - } - Block::OrderedList(els, _) => format!( - "<ol>{}</ol>", - els.into_iter() - .map(|e| format!( - "<li>{}</li>", - match e { - ListItem::Simple(s) => span_to_html(s), - ListItem::Paragraph(b) => blocks_to_html(b), - } - )) - .collect::<Vec<_>>() - .join("") - ), - Block::UnorderedList(els) => { - format!( - "<ul>{}</ul>", - els.into_iter() - .map(|e| format!( - "<li>{}</li>", - match e { - ListItem::Simple(s) => span_to_html(s), - ListItem::Paragraph(b) => blocks_to_html(b), - } - )) - .collect::<Vec<_>>() - .join("") - ) - } - Block::Raw(r) => r, - Block::Hr => format!("<hr/>"), - } - .as_str(); - } - out -} - -pub fn escape(text: &str) -> String { - text.replace("&", "&") - .replace("<", "<") - .replace(">", ">") - .replace("'", "’") - .replace("\"", """) -} |