summaryrefslogtreecommitdiff
path: root/static/js/codeBlockNameLinks.js
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2025-09-13 14:55:15 -0600
committerAlejandro Soto <alejandro@34project.org>2025-09-13 14:55:15 -0600
commita2ea06d513a5802964f8f0ef5795cec7e548ed7b (patch)
tree8afb58e3749d19bc46cffc6473f3059d647c515b /static/js/codeBlockNameLinks.js
Squashed 'themes/tabi-lean/' content from commit 95c8796
git-subtree-dir: themes/tabi-lean git-subtree-split: 95c879696445ede40daa7a30a88dae5dd74d5c0c
Diffstat (limited to 'static/js/codeBlockNameLinks.js')
-rw-r--r--static/js/codeBlockNameLinks.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/static/js/codeBlockNameLinks.js b/static/js/codeBlockNameLinks.js
new file mode 100644
index 0000000..ea0b678
--- /dev/null
+++ b/static/js/codeBlockNameLinks.js
@@ -0,0 +1,36 @@
+document.addEventListener("DOMContentLoaded", function() {
+ // Convert URLs in data-name to links.
+ document.querySelectorAll('code[data-name]').forEach(function(code) {
+ const name = code.getAttribute('data-name');
+ if (name.startsWith('http')) {
+ const link = document.createElement('a');
+ link.href = name;
+ link.className = 'source-path';
+ link.textContent = name;
+ code.insertBefore(link, code.firstChild);
+ // Remove data-name to avoid overlap with Zola's native display.
+ code.removeAttribute('data-name');
+ code.parentElement?.removeAttribute('data-name');
+ }
+ });
+
+ // Legacy support for old shortcode. https://github.com/welpo/tabi/pull/489
+ document.querySelectorAll('.code-source').forEach(function(marker) {
+ const sourceUrl = marker.getAttribute('data-source');
+ const nextPre = marker.nextElementSibling;
+ if (nextPre?.tagName === 'PRE') {
+ const code = nextPre.querySelector('code');
+ if (code) {
+ if (sourceUrl.startsWith('http')) {
+ const link = document.createElement('a');
+ link.href = sourceUrl;
+ link.className = 'source-path';
+ link.textContent = sourceUrl;
+ code.insertBefore(link, code.firstChild);
+ } else {
+ code.setAttribute('data-name', sourceUrl);
+ }
+ }
+ }
+ });
+});