From 9763babb896d68d18542d66bd8cbf5f87fa6f41a Mon Sep 17 00:00:00 2001 From: Eli White Date: Sun, 8 Nov 2015 13:13:28 -0800 Subject: [PATCH] create-element-to-jsx-children: Convert mixed strings to JSXText instead of Literal --- test/__tests__/create-element-to-jsx-test.js | 2 ++ ...eate-element-to-jsx-children-mixed-empty-string.js | 11 +++++++++++ ...ement-to-jsx-children-mixed-empty-string.output.js | 5 +++++ transforms/create-element-to-jsx.js | 4 ++-- 4 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 test/create-element-to-jsx-children-mixed-empty-string.js create mode 100644 test/create-element-to-jsx-children-mixed-empty-string.output.js diff --git a/test/__tests__/create-element-to-jsx-test.js b/test/__tests__/create-element-to-jsx-test.js index 874f5a25..cca4b2e5 100644 --- a/test/__tests__/create-element-to-jsx-test.js +++ b/test/__tests__/create-element-to-jsx-test.js @@ -27,6 +27,8 @@ describe('create-element-to-jsx', () => { test('create-element-to-jsx', 'create-element-to-jsx-children-map'); + test('create-element-to-jsx', 'create-element-to-jsx-children-mixed-empty-string'); + test('create-element-to-jsx', 'create-element-to-jsx-spread'); test('create-element-to-jsx', 'create-element-to-jsx-no-react'); diff --git a/test/create-element-to-jsx-children-mixed-empty-string.js b/test/create-element-to-jsx-children-mixed-empty-string.js new file mode 100644 index 00000000..0e521fef --- /dev/null +++ b/test/create-element-to-jsx-children-mixed-empty-string.js @@ -0,0 +1,11 @@ +var React = require('react'); + +a = 'foo'; + +React.createElement( + 'div', + null, + a, + ' ', + a +); diff --git a/test/create-element-to-jsx-children-mixed-empty-string.output.js b/test/create-element-to-jsx-children-mixed-empty-string.output.js new file mode 100644 index 00000000..3b664238 --- /dev/null +++ b/test/create-element-to-jsx-children-mixed-empty-string.output.js @@ -0,0 +1,5 @@ +var React = require('react'); + +a = 'foo'; + +
{a} {a}
; diff --git a/transforms/create-element-to-jsx.js b/transforms/create-element-to-jsx.js index 9a946ce0..5562f7e4 100644 --- a/transforms/create-element-to-jsx.js +++ b/transforms/create-element-to-jsx.js @@ -41,8 +41,8 @@ module.exports = function(file, api, options) { const attributes = convertObjectExpressionToJSXAttributes(props); const children = node.value.arguments.slice(2).map((child, index) => { - if (child.type === 'Literal') { - return j.literal(child.value); + if (child.type === 'Literal' && typeof child.value === 'string') { + return j.jsxText(child.value); } else if (child.type === 'CallExpression' && child.callee.object.name === 'React' && child.callee.property.name === 'createElement') {