diff options
author | Tor Andersson <tor@ccxvii.net> | 2025-04-24 12:48:51 +0200 |
---|---|---|
committer | Tor Andersson <tor@ccxvii.net> | 2025-04-25 16:06:05 +0200 |
commit | ed2361980b455d1825d811670f329cbcf5624927 (patch) | |
tree | a1e620490bf305635c3a0f22a6f695e22c14ff2f /server.js | |
parent | 71a98cbbe0657880cfb1d81962786188b009fc5c (diff) | |
download | server-ed2361980b455d1825d811670f329cbcf5624927.tar.gz |
Move docs to Markdown and use markdown renderer in server.
Diffstat (limited to 'server.js')
-rw-r--r-- | server.js | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -9,6 +9,7 @@ const { WebSocketServer } = require("ws") const express = require("express") const url = require("url") const sqlite3 = require("better-sqlite3") +const marked = require("marked") require("dotenv").config() @@ -4184,6 +4185,43 @@ wss.on("connection", (socket, req) => { }) /* + * DOCUMENTATION - MARKDOWN + */ + +const docs_prolog = `<!doctype html> +<meta name="viewport" content="width=device-width"> +<link rel="stylesheet" href="/docs/style.css"> +<title>TITLE</title> +<body><article>` + +function render_markdown(path) { + var text = fs.readFileSync(path, "utf-8") + var html = marked.parse(text) + var title = html.match(/<h1>([^>]*)<\/h1>/)?.[1] ?? path + return docs_prolog.replace("TITLE", title) + html +} + +app.get("/docs", function (req, res) { + res.send(render_markdown("docs/index.md")) +}) + +app.get("/docs/:file", function (req, res) { + try { + res.send(render_markdown("docs/" + req.params.file + ".md")) + } catch (err) { + res.status(404).send(err.message) + } +}) + +app.get("/docs/:dir/:file", function (req, res) { + try { + res.send(render_markdown("docs/" + req.params.dir + "/" + req.params.file + ".md")) + } catch (err) { + res.status(404).send(err.message) + } +}) + +/* * HIDDEN EXTRAS */ |