From fc0c0634269fb57dad2e75f6b5bf5c1aa06fabf8 Mon Sep 17 00:00:00 2001
From: Zetaphor <zetaphor@hey.com>
Date: Thu, 22 Jun 2023 15:17:34 -0300
Subject: [PATCH] Move regex pattern to config

---
 src/shared/config.ts   | 10 ++++++++++
 src/shared/markdown.ts | 17 ++++-------------
 2 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/src/shared/config.ts b/src/shared/config.ts
index 28e8ce5..6b46224 100644
--- a/src/shared/config.ts
+++ b/src/shared/config.ts
@@ -25,4 +25,14 @@ export const fetchLimit = 40;
 export const relTags = "noopener nofollow";
 export const emDash = "\u2014";
 
+/**
+ * Accepted formats:
+ * !community@server.com
+ * /c/community@server.com
+ * /m/community@server.com
+ * /u/username@server.com
+ */
+export const instanceLinkRegex =
+  /(\/[c|m|u]\/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}|![a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/g;
+
 export const testHost = "0.0.0.0:8536";
diff --git a/src/shared/markdown.ts b/src/shared/markdown.ts
index f56817e..d8ed9d5 100644
--- a/src/shared/markdown.ts
+++ b/src/shared/markdown.ts
@@ -14,6 +14,7 @@ import markdown_it_sub from "markdown-it-sub";
 import markdown_it_sup from "markdown-it-sup";
 import Renderer from "markdown-it/lib/renderer";
 import Token from "markdown-it/lib/token";
+import { instanceLinkRegex } from "./config";
 
 export let Tribute: any;
 
@@ -74,16 +75,6 @@ const html5EmbedConfig = {
 
 function localCommunityLinkParser(md) {
   md.core.ruler.push("replace-text", state => {
-    /**
-     * Accepted formats:
-     * !community@server.com
-     * /c/community@server.com
-     * /m/community@server.com
-     * /u/username@server.com
-     */
-    const pattern =
-      /(\/[c|m|u]\/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}|![a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/g;
-
     for (let i = 0; i < state.tokens.length; i++) {
       if (state.tokens[i].type !== "inline") {
         continue;
@@ -92,14 +83,14 @@ function localCommunityLinkParser(md) {
       for (let j = inlineTokens.length - 1; j >= 0; j--) {
         if (
           inlineTokens[j].type === "text" &&
-          pattern.test(inlineTokens[j].content)
+          instanceLinkRegex.test(inlineTokens[j].content)
         ) {
-          const textParts = inlineTokens[j].content.split(pattern);
+          const textParts = inlineTokens[j].content.split(instanceLinkRegex);
           const newTokens: Token[] = [];
 
           for (const part of textParts) {
             let linkClass = "community-link";
-            if (pattern.test(part)) {
+            if (instanceLinkRegex.test(part)) {
               // Rewrite !community@server.com and KBin /m/community@server.com to local urls
               let href;
               if (part.startsWith("!")) {
-- 
2.44.1