about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/strings.ts28
1 files changed, 11 insertions, 17 deletions
diff --git a/src/lib/strings.ts b/src/lib/strings.ts
index 2616141d6..bfa8848bd 100644
--- a/src/lib/strings.ts
+++ b/src/lib/strings.ts
@@ -82,13 +82,11 @@ export function extractEntities(
       } else if (!match[3].includes('.')) {
         continue // probably not a handle
       }
+      const start = text.indexOf(match[3], match.index) - 1
       ents.push({
         type: 'mention',
         value: match[3],
-        index: {
-          start: match.indices[2][0], // skip the (^|\s) but include the '@'
-          end: match.indices[3][1],
-        },
+        index: {start, end: start + match[3].length + 1},
       })
     }
   }
@@ -105,20 +103,16 @@ export function extractEntities(
         }
         value = `https://${value}`
       }
-      const index = {
-        start: match.indices[2][0], // skip the (^|\s)
-        end: match.indices[2][1],
+      const start = text.indexOf(match[2], match.index)
+      const index = {start, end: start + match[2].length}
+      // strip ending puncuation
+      if (/[.,;!?]$/.test(value)) {
+        value = value.slice(0, -1)
+        index.end--
       }
-      {
-        // strip ending puncuation
-        if (/[.,;!?]$/.test(value)) {
-          value = value.slice(0, -1)
-          index.end--
-        }
-        if (/[)]$/.test(value) && !value.includes('(')) {
-          value = value.slice(0, -1)
-          index.end--
-        }
+      if (/[)]$/.test(value) && !value.includes('(')) {
+        value = value.slice(0, -1)
+        index.end--
       }
       ents.push({
         type: 'link',