From 8b107c27f2b428eb00f7aa141fcf03a2c7dc97f8 Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Sun, 5 Dec 2021 07:27:24 +0530 Subject: [PATCH] fix: cover more cases --- lib/rules/prefer-template.js | 7 ++++--- tests/lib/rules/prefer-template.js | 10 ++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/rules/prefer-template.js b/lib/rules/prefer-template.js index 6baa0658c49f..446689914746 100644 --- a/lib/rules/prefer-template.js +++ b/lib/rules/prefer-template.js @@ -198,10 +198,11 @@ module.exports = { if (currentNode.range[0] === currentNode.parent.left.range[0]) { if (isConcatenation(currentNode.right)) { - const openingParentesisSign = sourceCode.getFirstTokenBetween(currentNode.left, currentNode.right, token => token.value === "("); - const leftNodeText = currentNodeText.slice(0, openingParentesisSign.range[0] - firstToken.range[0]); + const openingParenthesisSign = sourceCode.getFirstTokenBetween(currentNode.left, currentNode.right, token => token.value === "("); + const leftNodeText = currentNodeText.slice(0, openingParenthesisSign.range[0] - firstToken.range[0]); + const leftNodeTextBetweenParenthesis = currentNodeText.slice(currentNode.right.left.range[0], currentNode.right.left.range[1]); - return `${leftNodeText}${currentNode.right.left.raw} + \`${escapeTemplatePlaceholders(currentNode.right.right.raw)}'`; + return `${leftNodeText}${leftNodeTextBetweenParenthesis} + \`${escapeTemplatePlaceholders(currentNode.right.right.raw)}'`; } const leftNodeText = currentNodeText.slice(0, currentNode.right.range[0] - firstToken.range[0]); diff --git a/tests/lib/rules/prefer-template.js b/tests/lib/rules/prefer-template.js index 9d45d5c6ac28..f27879677f56 100644 --- a/tests/lib/rules/prefer-template.js +++ b/tests/lib/rules/prefer-template.js @@ -370,6 +370,16 @@ ruleTester.run("prefer-template", rule, { output: "`${a }\\`b\\` + \\`c\\`` + `\\`d\\`${ e}`", errors }, + { + code: "'a' + ('b' + 'c' + 'd') + e", + output: "'a' + 'b' + 'c' + `d${ e}`", + errors + }, + { + code: "'a' + ('b' + 'c' + 'd' + (e + 'f') + 'g' +'h' + 'i') + j", + output: "`a` + 'b' + 'c' + `d${ e }fg` +`h` + `i${ j}`", + errors + }, { code: "var foo = \"Hello \" + \"world \" + \"another \" + test", output: "var foo = \"Hello \" + \"world \" + `another ${ test}`",