Color syntax highlighting

Fixes #202
This commit is contained in:
Neale Pickett 2024-04-09 11:12:32 -06:00
parent 0696e7c61c
commit 830eb2851a
2 changed files with 20 additions and 17 deletions

View File

@ -1,4 +1,4 @@
const pyodidePromise = import("https://cdn.jsdelivr.net/npm/pyodide@0.25.1/pyodide.mjs") import * as pyodide from "https://cdn.jsdelivr.net/npm/pyodide@0.25.1/pyodide.mjs" // v0.16.1 known good
const HOME = "/home/web_user" const HOME = "/home/web_user"

View File

@ -1,21 +1,11 @@
import {Toast} from "../common.mjs" import {Toast} from "../common.mjs"
import "https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js" //import "https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"
import "https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-core.min.js"
import "https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/autoloader/prism-autoloader.min.js"
import * as CodeJar from "https://cdn.jsdelivr.net/npm/codejar@4.2.0" import * as CodeJar from "https://cdn.jsdelivr.net/npm/codejar@4.2.0"
var workers = {} Prism.plugins.autoloader.languages_path = "https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/"
const prismCssUrl = "https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css"
// loadWorker returns an existing worker if one exists, otherwise, it starts a new worker
function loadWorker(language) {
let worker = workers[language]
if (!worker) {
let url = new URL(language + ".mjs", import.meta.url)
worker = new Worker(url, {
type: "module",
})
workers[language] = worker
}
return worker
}
export class Workspace { export class Workspace {
/** /**
@ -85,7 +75,7 @@ export class Workspace {
.then(() => { .then(() => {
codeBlock.parentElement.replaceWith(this.element) codeBlock.parentElement.replaceWith(this.element)
}) })
.catch(err => console.warn(`Unable to load ${this.language} interpreter`)) .catch(err => console.warn(`Unable to load interpreter: `, this.language))
.finally(() => { .finally(() => {
loadingElement.remove() loadingElement.remove()
}) })
@ -232,3 +222,16 @@ export class Workspace {
this.element.classList.toggle("fixed") this.element.classList.toggle("fixed")
} }
} }
function init() {
let link = document.head.appendChild(document.createElement("link"))
link.rel = "stylesheet"
link.href = prismCssUrl
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", init)
} else {
init()
}