From 09f8ddf123ce9a082b4b8362e343755bc0a9fcbf Mon Sep 17 00:00:00 2001
From: Julian Kropff
Date: Sat, 25 Apr 2026 14:57:05 +0200
Subject: [PATCH] Add: Casono manual with integrated Markdown renderer
---
.../casono-markdown-render-engine.js | 84 +++++
documents/docs/game-engine/manual.html | 316 ++++++++++++++++++
2 files changed, 400 insertions(+)
create mode 100644 documents/docs/game-engine/casono-markdown-render-engine.js
create mode 100644 documents/docs/game-engine/manual.html
diff --git a/documents/docs/game-engine/casono-markdown-render-engine.js b/documents/docs/game-engine/casono-markdown-render-engine.js
new file mode 100644
index 0000000..966dbba
--- /dev/null
+++ b/documents/docs/game-engine/casono-markdown-render-engine.js
@@ -0,0 +1,84 @@
+const marked = {
+ parse: function (md) {
+ if (!md) return "";
+
+ let toc = [];
+
+ md = md.replace(/^(#{1,3})\s+(.*)$/gim, (m, hashes, title) => {
+ const level = hashes.length;
+
+ const id = title
+ .toLowerCase()
+ .trim()
+ .replace(/[^\wäöüß]+/g, "-")
+ .replace(/-+/g, "-")
+ .replace(/^-|-$/g, "");
+
+ toc.push({ level, title, id });
+
+ return `
+
+ ${title}
+
+ `;
+ });
+
+ md = md.replace(/```([\s\S]*?)```/g, (_, code) => {
+ return `${escapeHtml(code)}
`;
+ });
+
+ md = md.replace(/!\[(.*?)\]\((.*?)\)/gim,
+ `
`
+ );
+
+ md = md.replace(/\[(.*?)\]\((.*?)\)/gim,
+ `$1`
+ );
+
+ md = md.replace(/`(.*?)`/gim,
+ `$1`
+ );
+
+ md = md.replace(/\*\*(.*?)\*\*/gim, "$1");
+ md = md.replace(/\*(.*?)\*/gim, "$1");
+
+ md = md.replace(/^\s*-\s(.+)$/gim, "$1");
+ md = wrapLists(md);
+
+ md = md
+ .replace(/\n{2,}/g, "
")
+ .replace(/^(?!$1
");
+
+ return buildToc(toc) + md;
+ }
+};
+
+function buildToc(items) {
+ if (!items.length) return "";
+
+ let html = ``;
+
+ items.forEach(i => {
+ html += `
+
+ `;
+ });
+
+ html += `
`;
+ return html;
+}
+
+function wrapLists(html) {
+ return html.replace(/(.*?<\/li>)/gs, "");
+}
+
+function escapeHtml(text) {
+ return text
+ .replace(/&/g, "&")
+ .replace(//g, ">");
+}
+
+window.marked = marked;
diff --git a/documents/docs/game-engine/manual.html b/documents/docs/game-engine/manual.html
new file mode 100644
index 0000000..27ca621
--- /dev/null
+++ b/documents/docs/game-engine/manual.html
@@ -0,0 +1,316 @@
+
+
+
+
+ Markdown Viewer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+