diff options
author | Raphael <mail@raphaelkabo.com> | 2023-10-06 16:54:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-06 16:54:03 +0100 |
commit | a14afed944e5f0b87af96cc5c6a262d246b88d1d (patch) | |
tree | 26104aa7f2717ea7e8f69734a2181d456f264481 /src/util | |
parent | f390b1d45b3f44a860fef4df2b31064f441b5065 (diff) | |
parent | 722d54e5ae8957436818b14e7aea613b19b12d28 (diff) |
Merge pull request #111 from lowercasename/rk/typescript
Typescript migration
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/config.ts | 17 | ||||
-rw-r--r-- | src/util/markdown.ts | 44 |
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"; + +// ? to ? helper +function htmlEscapeToText(text: string) { + return text.replace(/\&\#[0-9]*;|&/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; +}; |