const joiner = "<><>"; export const inlineTokens: { rx: RegExp; create: ( content: RegExpExecArray, start: number, end: number, tokens: InlineTokenInsert[], ) => void; replace: (line: string) => string; }[] = [ { rx: /(\*\*)(.*?)(\*\*)/g, create(content, start, end, tokens) { tokens.push({ content: this.replace(content[0]), type: "bold", end, start, }); }, replace(l) { return l.replace(this.rx, (_, __, val) => val); }, }, { rx: /\[(.*?)\]\((.*?)\)/g, create(content, start, end, tokens) { const [_, label, href] = content; tokens.push({ content: label, type: "anchor", data: { href, }, start, end, }); }, replace(l) { return l.replace(this.rx, (_, label, href) => [label, href].join(joiner)); // return l }, }, ];