Issue 12138 - Fix chat support for regex chars in code blocks

This commit is contained in:
Bart Enkelaar
2020-04-27 13:56:27 +02:00
committed by Matteo Pagliazzi
parent b1a348aee3
commit ec5de91123
2 changed files with 19 additions and 3 deletions

View File

@@ -119,4 +119,18 @@ describe('highlightMentions', () => {
expect(err).to.be.undefined;
});
it('github issue 12138, method crashes when regex chars are used in code block', async () => {
const text = '`[test]`';
let err;
try {
await highlightMentions(text);
} catch (e) {
err = e;
}
expect(err).to.be.undefined;
});
});

View File

@@ -1,3 +1,4 @@
import escapeRegExp from 'lodash/escapeRegExp';
import habiticaMarkdown from 'habitica-markdown';
import { model as User } from '../models/user';
@@ -57,14 +58,15 @@ function withOptionalIndentation (content) {
}
function createCodeBlockRegex ({ content, type, markup }) {
const contentRegex = escapeRegExp(content);
let regexStr = '';
if (type === 'code_block') {
regexStr = withOptionalIndentation(content);
regexStr = withOptionalIndentation(contentRegex);
} else if (type === 'fence') {
regexStr = `\\s*${markup}.*\n${withOptionalIndentation(content)}\\s*${markup}`;
regexStr = `\\s*${markup}.*\n${withOptionalIndentation(contentRegex)}\\s*${markup}`;
} else { // type === code_inline
regexStr = `${markup} ?${content} ?${markup}`;
regexStr = `${markup} ?${contentRegex} ?${markup}`;
}
return new RegExp(regexStr);