From 28b2654579cd24ffbd730560a56c5e6b93986d35 Mon Sep 17 00:00:00 2001 From: Ben Bridle Date: Sat, 1 Feb 2025 17:52:47 +1300 Subject: Implement 'gallery-nav' fragment type This type is for showing a list of pages as clickable image previews. Each line in the fragment is an internal page link, followed by a '::' separator, followed by the name of an image file. Image files must be stored inside the '/images/thumb/' directory of the generated website. --- src/generate_html.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/generate_html.rs') diff --git a/src/generate_html.rs b/src/generate_html.rs index f63614b..dca68f7 100644 --- a/src/generate_html.rs +++ b/src/generate_html.rs @@ -212,8 +212,24 @@ pub fn document_to_html(document: &MarkdownDocument, page: &Page, website: &Webs let thumb = format!("{root}images/thumb/{file}"); html!(""); }), + "gallery-nav" => wrap!("div", "class='gallery-nav'", for line in content.lines() { + let line = line.trim(); + if let Some((name, image)) = line.split_once("::") { + let name = name.trim(); + let image = image.trim(); + let ParsedLink { path, class, label } = parse_internal_link(name, page, website); + if website.has_image(image) { + let thumb = format!("{root}images/thumb/{image}"); + html!("

{label}

") + } else { + warn!("Gallery-nav on page {from:?} references nonexistent image {image:?}"); + } + } else { + warn!("Gallery-nav on page {from:?} has line without a '::' separator"); + } + }), _ => { - html!("
", language);
+                        html!("
");
                         html!("{}", sanitize_text(content, false));
                         html!("
"); }, -- cgit v1.2.3-70-g09d2