aboutsummaryrefslogtreecommitdiff
path: root/code/src/markdown.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-09-25 16:03:27 +0200
committermetamuffin <metamuffin@disroot.org>2022-09-25 16:03:27 +0200
commit136acb9049ff56b130a6071e403ffbc8b39f19b6 (patch)
treeffe5a98948779dcaba4f40dae312027e69c9f6af /code/src/markdown.rs
parent2403a9a3599c4b77d33fb6de5f438e53e19412ff (diff)
downloadmetamuffin-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.rs81
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("&", "&amp;")
- .replace("<", "&lt;")
- .replace(">", "&gt;")
- .replace("'", "&#8217;")
- .replace("\"", "&quot;")
-}