From 5aedbdbb564072ce616a1ca08e3c2bf9dced786b Mon Sep 17 00:00:00 2001 From: Aleksei Androsov Date: Fri, 29 Nov 2019 18:05:47 +0300 Subject: [PATCH] [fix] `jsx-curly-brace-presence`: allow trailing spaces in TemplateLiteral --- lib/rules/jsx-curly-brace-presence.js | 7 ++++++- tests/lib/rules/jsx-curly-brace-presence.js | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/rules/jsx-curly-brace-presence.js b/lib/rules/jsx-curly-brace-presence.js index 661fe52337..ad273c2d0a 100755 --- a/lib/rules/jsx-curly-brace-presence.js +++ b/lib/rules/jsx-curly-brace-presence.js @@ -174,8 +174,12 @@ module.exports = { return node.type && node.type === 'Literal' && node.value && jsxUtil.isWhiteSpaces(node.value); } + function isStringWithTrailingWhiteSpaces(value) { + return /^\s|\s$/.test(value); + } + function isLiteralWithTrailingWhiteSpaces(node) { - return node.type && node.type === 'Literal' && node.value && /^\s|\s$/.test(node.value); + return node.type && node.type === 'Literal' && node.value && isStringWithTrailingWhiteSpaces(node.value); } // Bail out if there is any character that needs to be escaped in JSX @@ -202,6 +206,7 @@ module.exports = { expressionType === 'TemplateLiteral' && expression.expressions.length === 0 && expression.quasis[0].value.raw.indexOf('\n') === -1 && + !isStringWithTrailingWhiteSpaces(expression.quasis[0].value.raw) && !needToEscapeCharacterForJSX(expression.quasis[0].value.raw) && ( jsxUtil.isJSX(JSXExpressionNode.parent) || !containsQuoteCharacters(expression.quasis[0].value.cooked) diff --git a/tests/lib/rules/jsx-curly-brace-presence.js b/tests/lib/rules/jsx-curly-brace-presence.js index 1e137a6c8e..3d10885cdb 100755 --- a/tests/lib/rules/jsx-curly-brace-presence.js +++ b/tests/lib/rules/jsx-curly-brace-presence.js @@ -280,6 +280,14 @@ ruleTester.run('jsx-curly-brace-presence', rule, { code: '{" space before"}', options: ['never'] }, + { + code: '{`space after `}', + options: ['never'] + }, + { + code: '{` space before`}', + options: ['never'] + }, { code: [''].join('/n'), options: ['never'] @@ -342,6 +350,17 @@ ruleTester.run('jsx-curly-brace-presence', rule, { parser: parsers.BABEL_ESLINT, options: [{children: 'never'}] }, + { + code: ` + + { \`space after \` } + foo + { \` space before\` } + + `, + parser: parsers.BABEL_ESLINT, + options: [{children: 'never'}] + }, { code: `