diff --git a/.eslintrc.json b/.eslintrc.json index 014c668..ea9a760 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -13,6 +13,6 @@ }, "rules": { "semi": [2, "always"], - "quotes": [2, "single", { "avoidEscape": true }] + "quotes": [2, "single", { "avoidEscape": false }] } } \ No newline at end of file diff --git a/__tests__/replacer.test.js b/__tests__/replacer.test.js index 92dbb7d..0a75866 100644 --- a/__tests__/replacer.test.js +++ b/__tests__/replacer.test.js @@ -22,6 +22,19 @@ describe('Tests the replacer module', () => { expect('a'.replace(sut.search, sut.replacement)).toBe('a'); expect(' a'.replace(sut.search, sut.replacement)).toBe('b'); }); + + it('tests that multiple concurrent replacementsi n asingle string get formatted correctly', () => { + const sut = splitReplaceCommand('!s z/t'); + const messages = [{ + content: 'nice peppy buzz', + author: 'author' + }]; + const expected = 'author nice peppy bu**tt**'; + const actual = replaceFirstMessage(messages, sut.search, sut.replacement, channel); + + expect(actual).toBe(false); + expect(channel.send).toBeCalledWith(expected); + }); it.each(['', null, undefined, false, 0])('tests the case for no replacement', (emptyIshStringIsh) => { const regex = new RegExp('hog wild', 'gi'); diff --git a/replacer.js b/replacer.js index 235ea76..9c85dd2 100644 --- a/replacer.js +++ b/replacer.js @@ -42,7 +42,11 @@ function replaceFirstMessage(messages, regex, replacement, channel) { let replacePhrase = ''; if(replacement?.length > 0) { - replacePhrase = cleansedMessageText.replace(regex, '**' + replacement + '**'); + replacePhrase = cleansedMessageText + .replace(regex, '\v' + replacement + '\v') + .replace('\v\v', '') + .replace(/\v/g, '**'); + } else { replacePhrase = msg.content.replace(regex, ''); @@ -74,7 +78,7 @@ function splitReplaceCommand(replaceCommand) { return { search, replacement: response[1] - } + }; } module.exports = {