summaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
authorRaphael <mail@raphaelkabo.com>2023-10-06 16:54:03 +0100
committerGitHub <noreply@github.com>2023-10-06 16:54:03 +0100
commita14afed944e5f0b87af96cc5c6a262d246b88d1d (patch)
tree26104aa7f2717ea7e8f69734a2181d456f264481 /src/util
parentf390b1d45b3f44a860fef4df2b31064f441b5065 (diff)
parent722d54e5ae8957436818b14e7aea613b19b12d28 (diff)
Merge pull request #111 from lowercasename/rk/typescript
Typescript migration
Diffstat (limited to 'src/util')
-rw-r--r--src/util/config.ts17
-rw-r--r--src/util/markdown.ts44
2 files changed, 61 insertions, 0 deletions
diff --git a/src/util/config.ts b/src/util/config.ts
new file mode 100644
index 0000000..c65fdb0
--- /dev/null
+++ b/src/util/config.ts
@@ -0,0 +1,17 @@
+import getConfig from "../lib/config.js";
+
+const config = getConfig();
+
+interface FrontendConfig {
+ domain: string;
+ email: string;
+ siteName: string;
+ showKofi: boolean;
+}
+
+export const frontendConfig = (): FrontendConfig => ({
+ domain: config.general.domain,
+ email: config.general.email,
+ siteName: config.general.site_name,
+ showKofi: config.general.show_kofi,
+});
diff --git a/src/util/markdown.ts b/src/util/markdown.ts
new file mode 100644
index 0000000..9f5d384
--- /dev/null
+++ b/src/util/markdown.ts
@@ -0,0 +1,44 @@
+// Extra marked renderer (used to render plaintext event description for page metadata)
+// Adapted from https://dustinpfister.github.io/2017/11/19/nodejs-marked/
+
+import { marked } from "marked";
+
+// &#63; to ? helper
+function htmlEscapeToText(text: string) {
+ return text.replace(/\&\#[0-9]*;|&amp;/g, function (escapeCode) {
+ if (escapeCode.match(/amp/)) {
+ return "&";
+ }
+ const code = escapeCode.match(/[0-9]+/);
+ return String.fromCharCode(Number(code));
+ });
+}
+
+export const renderPlain = () => {
+ var render = new marked.Renderer();
+ // render just the text of a link, strong, em
+ render.link = function (href, title, text) {
+ return text;
+ };
+ render.strong = function (text) {
+ return text;
+ };
+ render.em = function (text) {
+ return text;
+ };
+ // render just the text of a paragraph
+ render.paragraph = function (text) {
+ return htmlEscapeToText(text) + "\r\n";
+ };
+ // render nothing for headings, images, and br
+ render.heading = function (text, level) {
+ return "";
+ };
+ render.image = function (href, title, text) {
+ return "";
+ };
+ render.br = function () {
+ return "";
+ };
+ return render;
+};