From 38ab38645b96b9f6e2b16c8ce864421123645665 Mon Sep 17 00:00:00 2001 From: Usoka <27248545+Usoka@users.noreply.github.com> Date: Fri, 7 May 2021 06:21:55 +1200 Subject: [PATCH] Add various new tag functions (#195) --- backend/src/plugins/Tags/TagsPlugin.ts | 10 +++++++++- backend/src/plugins/Tags/util/renderTagBody.ts | 5 +++++ backend/src/templateFormatter.ts | 12 ++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/backend/src/plugins/Tags/TagsPlugin.ts b/backend/src/plugins/Tags/TagsPlugin.ts index f6aa89e1..a73b4a42 100644 --- a/backend/src/plugins/Tags/TagsPlugin.ts +++ b/backend/src/plugins/Tags/TagsPlugin.ts @@ -203,7 +203,7 @@ export const TagsPlugin = zeppelinGuildPlugin()("tags", { return ""; } - if (input.match(/^<(?:@(?:!|&)?|#)\d+>$/)) { + if (input.match(/^<(?:@[!&]?|#)\d+>$/)) { return input; } @@ -217,6 +217,14 @@ export const TagsPlugin = zeppelinGuildPlugin()("tags", { return ""; }, + + isMention: input => { + if (typeof input !== "string") { + return false; + } + + return /^<(?:@[!&]?|#)\d+>$/.test(input); + }, }; for (const [name, fn] of Object.entries(state.tagFunctions)) { diff --git a/backend/src/plugins/Tags/util/renderTagBody.ts b/backend/src/plugins/Tags/util/renderTagBody.ts index dfde7a71..735455dc 100644 --- a/backend/src/plugins/Tags/util/renderTagBody.ts +++ b/backend/src/plugins/Tags/util/renderTagBody.ts @@ -25,6 +25,11 @@ export async function renderTagBody( if (typeof name !== "string") return; dynamicVars[name] = val; }, + setr(name, val) { + if (typeof name !== "string") return ""; + dynamicVars[name] = val; + return val; + }, get(name) { return dynamicVars[name] == null ? "" : dynamicVars[name]; }, diff --git a/backend/src/templateFormatter.ts b/backend/src/templateFormatter.ts index 1963c816..e3575301 100644 --- a/backend/src/templateFormatter.ts +++ b/backend/src/templateFormatter.ts @@ -308,6 +308,18 @@ const baseValues = { if (end != null && isNaN(end)) return ""; return arg1.slice(parseInt(start, 10), end && parseInt(end, 10)); }, + lower(arg) { + if (typeof arg !== "string") return arg; + return arg.toLowerCase(); + }, + upper(arg) { + if (typeof arg !== "string") return arg; + return arg.toUpperCase(); + }, + upperFirst(arg) { + if (typeof arg !== "string") return arg; + return arg.charAt(0).toUpperCase() + arg.slice(1); + }, rand(from, to, seed = null) { if (isNaN(from)) return 0;