]> Untitled Git - lemmy-ui.git/commitdiff
Move regex pattern to config
authorZetaphor <zetaphor@hey.com>
Thu, 22 Jun 2023 18:17:34 +0000 (15:17 -0300)
committerZetaphor <zetaphor@hey.com>
Thu, 22 Jun 2023 18:17:34 +0000 (15:17 -0300)
src/shared/config.ts
src/shared/markdown.ts

index 28e8ce5119a5046125e62c4f9b0e98f088926188..6b462244f2e4519575106e2cde46c0b13eec8176 100644 (file)
@@ -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";
index f56817e61fa4beab53b27926e953c030a890340a..d8ed9d5079fa08d8e867e181ebbb35c4a13943a5 100644 (file)
@@ -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("!")) {