Skip to content

Commit

Permalink
Set up code highlighting
Browse files Browse the repository at this point in the history
  • Loading branch information
NoelDeMartin committed Jan 20, 2025
1 parent 6236188 commit 6177bba
Show file tree
Hide file tree
Showing 8 changed files with 105 additions and 0 deletions.
10 changes: 10 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"lint": "prettier . -c"
},
"dependencies": {
"prismjs": "^1.29.0",
"tailwindcss": "^4.0.0-beta.9"
},
"devDependencies": {
Expand Down
15 changes: 15 additions & 0 deletions resources/assets/css/code.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
@import 'prismjs/themes/prism-tomorrow.css';

code {
background-color: #f1f5f8;
border-radius: 0.5rem;
color: #266193;
font-size: 0.875em;
font-weight: 400;
padding: 0.25rem 0.5rem;
}

:not(pre) > code[class*='language-'],
pre[class*='language-'] {
border-radius: 0.5rem;
}
68 changes: 68 additions & 0 deletions resources/assets/js/code.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
let Prism;

async function loadPrism() {
if (Prism) {
return;
}

Prism = await import('prismjs');
await import('prismjs/components/prism-javascript');
await import('prismjs/components/prism-json');
await import('prismjs/components/prism-markup-templating');
await import('prismjs/components/prism-php');
await import('prismjs/components/prism-scss');
await import('prismjs/components/prism-turtle');
await import('prismjs/components/prism-typescript');
}

function getLanguage(element) {
for (const className of element.classList) {
if (!className.startsWith('language-')) {
continue;
}

return className.substr(9);
}
}

function highlightCodeElement(element, language) {
if (
element.parentElement &&
element.parentElement.tagName &&
element.parentElement.tagName.toLowerCase() === 'pre'
) {
element.parentElement.classList.add(`language-${language}`);
}

element.innerHTML = Prism.highlight(
element.innerText,
Prism.languages[language],
language,
);
}

async function highlightCode() {
const codeElements = document.querySelectorAll('code');

if (codeElements.length === 0) {
return;
}

await loadPrism();

for (const codeElement of codeElements) {
const language = getLanguage(codeElement);

if (!language) {
continue;
}

highlightCodeElement(codeElement, language);
}
}

if (document.readyState === 'complete') {
highlightCode();
} else {
document.addEventListener('DOMContentLoaded', highlightCode);
}
4 changes: 4 additions & 0 deletions resources/views/blog/show.blade.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
@extends('layout', ['minimal' => true])

@push('head')
@vite(['resources/assets/css/code.css', 'resources/assets/js/code.js'])
@endpush

@section('main')
<article>
<div class="max-w-readable">
Expand Down
1 change: 1 addition & 0 deletions resources/views/layout.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
}
</style>
@vite(['resources/assets/css/main.css', 'resources/assets/js/main.js'])
@stack('head')
</head>
<body
x-data="{ navigationOpen: false }"
Expand Down
4 changes: 4 additions & 0 deletions resources/views/tasks/show.blade.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
@extends('layout', ['minimal' => true])

@push('head')
@vite(['resources/assets/css/code.css', 'resources/assets/js/code.js'])
@endpush

@section('main')
<article class="max-w-readable">
<h1>{{ $title }}</h1>
Expand Down
2 changes: 2 additions & 0 deletions vite.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ export default defineConfig({
tailwindcss(),
laravel({
input: [
'resources/assets/css/code.css',
'resources/assets/css/main.css',
'resources/assets/js/code.js',
'resources/assets/js/main.js',
],
refresh: true,
Expand Down

0 comments on commit 6177bba

Please sign in to comment.