From e9733ce6844894f4f1f30948611a57a02c6766ec Mon Sep 17 00:00:00 2001 From: Xe Date: Sun, 24 Jul 2022 17:32:34 +0000 Subject: add xeblog-sticker element Signed-off-by: Xe --- src/app/markdown.rs | 10 +++++++++- src/tmpl/mod.rs | 12 ++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/app/markdown.rs b/src/app/markdown.rs index d73a5c5..dee4eef 100644 --- a/src/app/markdown.rs +++ b/src/app/markdown.rs @@ -107,7 +107,15 @@ pub fn render(cfg: Arc, inp: &str) -> Result { el.replace(&crate::tmpl::xeblog_salary_history(cfg.clone()).0, ContentType::Html); Ok(()) - }) + }), + element!("xeblog-sticker", |el| { + let name = el.get_attribute("name").expect("wanted xeblog-sticker to contain name"); + let name_lower = name.clone().to_lowercase(); + let mood = el.get_attribute("mood").expect("wanted xeblog-sticker to contain mood"); + el.replace(&crate::tmpl::xeblog_sticker(name, mood).0, ContentType::Html); + + Ok(()) + }), ], ..RewriteStrSettings::default() }).unwrap(); diff --git a/src/tmpl/mod.rs b/src/tmpl/mod.rs index 5391e9f..08ab090 100644 --- a/src/tmpl/mod.rs +++ b/src/tmpl/mod.rs @@ -56,3 +56,15 @@ pub fn xeblog_conv(name: String, mood: String, body: Markup) -> Markup { } } } + +pub fn xeblog_sticker(name: String, mood: String) -> Markup { + html! { + center { + picture { + source type="image/avif" srcset={"https://cdn.xeiaso.net/file/christine-static/stickers/" (name_lower) "/" (mood) ".avif"}; + source type="image/webp" srcset={"https://cdn.xeiaso.net/file/christine-static/stickers/" (name_lower) "/" (mood) ".webp"}; + img alt={(name) " is " (mood)} src={"https://cdn.xeiaso.net/file/christine-static/stickers/" (name_lower) "/" (mood) ".png"}; + } + } + } +} -- cgit v1.2.3