forked from CringeStudios/gamja
Use RegExp match indices in linkifyChannel
This commit is contained in:
parent
0bcd044f10
commit
74d9dea5bb
@ -3,18 +3,18 @@ import { anchorme, html } from "./index.js";
|
|||||||
function linkifyChannel(text, transformChannel) {
|
function linkifyChannel(text, transformChannel) {
|
||||||
var children = [];
|
var children = [];
|
||||||
// TODO: Don't match punctuation
|
// TODO: Don't match punctuation
|
||||||
const channelRegex = /(^|\s)(#[^\s]+)/gid;
|
const channelRegex = /(?:^|\s)(#[^\s]+)/gid;
|
||||||
let match;
|
let match;
|
||||||
|
|
||||||
var last = 0;
|
var last = 0;
|
||||||
while ((match = channelRegex.exec(text)) !== null) {
|
while ((match = channelRegex.exec(text)) !== null) {
|
||||||
const [_, spaces, channel] = match;
|
var channel = match[1];
|
||||||
|
var [start, end] = match.indices[1];
|
||||||
|
|
||||||
const start = match.index + spaces.length;
|
|
||||||
children.push(text.substring(last, start));
|
children.push(text.substring(last, start));
|
||||||
children.push(transformChannel(channel));
|
children.push(transformChannel(channel));
|
||||||
|
|
||||||
last = match.index + spaces.length + channel.length;
|
last = end;
|
||||||
}
|
}
|
||||||
children.push(text.substring(last));
|
children.push(text.substring(last));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user