blog/public/js/codeBlockNameLinks.js
2025-03-11 11:16:49 +00:00

37 lines
1.5 KiB
JavaScript

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);
}
}
}
});
});