diff --git a/lib/rules/jsx-curly-brace-presence.js b/lib/rules/jsx-curly-brace-presence.js index 3865e273f9..490e18bc2c 100755 --- a/lib/rules/jsx-curly-brace-presence.js +++ b/lib/rules/jsx-curly-brace-presence.js @@ -104,7 +104,7 @@ module.exports = { function containsWhitespaceExpression(child) { if (child.type === 'JSXExpressionContainer') { const value = child.expression.value; - return value ? !(/\S/.test(value)) : false; + return value ? jsxUtil.isWhiteSpaces(value) : false; } return false; } @@ -206,7 +206,7 @@ module.exports = { } function isWhiteSpaceLiteral(node) { - return node.type && node.type === 'Literal' && node.value && !(/\S/.test(node.value)); + return node.type && node.type === 'Literal' && node.value && jsxUtil.isWhiteSpaces(node.value); } function getAdjacentSiblings(node, children) { diff --git a/lib/rules/jsx-one-expression-per-line.js b/lib/rules/jsx-one-expression-per-line.js index 4ce00a9063..093969d208 100644 --- a/lib/rules/jsx-one-expression-per-line.js +++ b/lib/rules/jsx-one-expression-per-line.js @@ -6,6 +6,7 @@ 'use strict'; const docsUrl = require('../util/docsUrl'); +const jsxUtil = require('../util/jsx'); // ------------------------------------------------------------------------------ // Rule Definition @@ -89,7 +90,7 @@ module.exports = { let countNewLinesAfterContent = 0; if (child.type === 'Literal' || child.type === 'JSXText') { - if (/^\s*$/.test(child.raw)) { + if (jsxUtil.isWhiteSpaces(child.raw)) { return; } diff --git a/lib/rules/no-danger-with-children.js b/lib/rules/no-danger-with-children.js index ae420581a4..66eb7f70a6 100644 --- a/lib/rules/no-danger-with-children.js +++ b/lib/rules/no-danger-with-children.js @@ -6,6 +6,7 @@ 'use strict'; const variableUtil = require('../util/variable'); +const jsxUtil = require('../util/jsx'); const docsUrl = require('../util/docsUrl'); // ------------------------------------------------------------------------------ @@ -81,7 +82,7 @@ module.exports = { function isLineBreak(node) { const isLiteral = node.type === 'Literal' || node.type === 'JSXText'; const isMultiline = node.loc.start.line !== node.loc.end.line; - const isWhiteSpaces = /^\s*$/.test(node.value); + const isWhiteSpaces = jsxUtil.isWhiteSpaces(node.value); return isLiteral && isMultiline && isWhiteSpaces; } diff --git a/lib/util/jsx.js b/lib/util/jsx.js index 6f8cbfde29..e3bcc23e3a 100644 --- a/lib/util/jsx.js +++ b/lib/util/jsx.js @@ -76,9 +76,19 @@ function isJSXAttributeKey(node) { node.name.name === 'key'; } +/** + * Check if value has only whitespaces + * @param {string} value + * @returns {boolean} + */ +function isWhiteSpaces(value) { + return typeof value === 'string' ? /^\s*$/.test(value) : false; +} + module.exports = { isDOMComponent, isFragment, isJSX, - isJSXAttributeKey + isJSXAttributeKey, + isWhiteSpaces };