Skip to content

Commit a366afd

Browse files
committed
Fix code block language label to show language name without prefix
1 parent 15ef97d commit a366afd

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

default.hbs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
<script src="//code.jquery.com/jquery-3.6.4.min.js" defer></script>
1111
<script src="{{asset "dist/app.js"}}" defer></script>
1212

13+
{{!-- Prism syntax highlighting --}}
14+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1/prism.min.js" defer></script>
15+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1/plugins/autoloader/prism-autoloader.min.js" defer></script>
16+
1317
{{!-- contentFor/block scripts - use with defer --}}
1418
{{{block "scripts"}}}
1519

src/css/components/code.css

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ pre.wrap {
4040
overflow-x: visible;
4141
}
4242

43-
/* Language label — Prism adds language-* class to <pre> */
44-
pre[class*="language-"]::before {
43+
/* Language label — set via JS from Prism's language-* class */
44+
pre[data-language]::before {
4545
background-color: var(--color-yellow);
4646
border-radius: 0 0 4px 4px;
4747
color: var(--color-navy);
48-
content: attr(class);
48+
content: attr(data-language);
4949
font-family: 'Inter', sans-serif;
5050
font-size: 0.7rem;
5151
font-weight: 600;

src/js/post/index.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
// Ship JS only active on post pages for better performance
22
import tocbot from 'tocbot';
33

4+
// Set data-language on <pre> elements so CSS can display a clean label.
5+
// Runs on load to ensure Prism's autoloader has finished highlighting.
6+
window.addEventListener('load', () => {
7+
document.querySelectorAll('pre > code[class*="language-"]').forEach((code) => {
8+
const match = code.className.match(/\blanguage-(\w+)\b/);
9+
if (match) code.closest('pre').dataset.language = match[1];
10+
});
11+
});
12+
413
// Apply .wrap class to any <pre> immediately following a <!--wrap--> HTML card
514
document.querySelectorAll('pre').forEach((pre) => {
615
let node = pre.closest('.kg-code-card') ?? pre;

0 commit comments

Comments
 (0)