commit 2a2abf3e2d6e5b39cac3fa9123569690b36de8a6
parent a311cad71173ef1ba74ef2b37e96d300696b2be7
Author: Hunter
Date:   Fri, 19 Dec 2025 23:02:05 -0500

allow case-insensitive matching of stock images

Diffstat:
Mindex.html | 15++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/index.html b/index.html @@ -242,25 +242,26 @@ const preview = document.getElementById('preview'); // Stock images loaded from manifest - can be referenced by bare filename - let stockImages = new Set(); + let stockImages = new Map(); // lowercase -> original filename // Load stock image list from manifest const stockImagesReady = fetch('resource-manifest.json') .then(r => r.json()) .then(manifest => { manifest.images.forEach(path => { - const filename = path.split('/').pop().toLowerCase(); - stockImages.add(filename); + const filename = path.split('/').pop(); + stockImages.set(filename.toLowerCase(), filename); }); }) .catch(() => console.log('Could not load resource manifest')); - // Rewrite bare image filenames to use images/ prefix + // Rewrite bare image filenames to use images/ prefix (case-insensitive, uses correct case) function rewriteBareImageSrcs(html) { return html.replace(/(<img\s[^>]*\bsrc\s*=\s*["'])([^"'/:]+\.(gif|png|jpg|jpeg|svg|webp))(["'])/gi, (match, before, filename, ext, after) => { - if (stockImages.has(filename.toLowerCase())) { - return before + 'images/' + filename + after; + const original = stockImages.get(filename.toLowerCase()); + if (original) { + return before + 'images/' + original + after; } return match; }); @@ -269,7 +270,7 @@ // Expand <images> tags into gallery table function expandImagesTag(html) { return html.replace(/<images\s*\/?>/gi, () => { - const images = Array.from(stockImages).sort(); + const images = Array.from(stockImages.values()).sort(); if (images.length === 0) return '<p>No images available</p>'; const rows = images.map(filename => `<tr><td>${filename}</td><td style="text-align:center;"><img src="images/${filename}"></td></tr>`