Concatenate adjacent string literals in JSX

This commit is contained in:
Casey Foster 2015-02-03 10:46:54 -06:00
parent 6da6bc3eb8
commit 2562b0c201
3 changed files with 35 additions and 8 deletions

View File

@ -5,9 +5,10 @@
// jsx
var esutils = require("esutils");
var react = require("../../helpers/react");
var t = require("../../../types");
var esutils = require("esutils");
var isString = require("lodash/lang/isString");
var react = require("../../helpers/react");
var t = require("../../../types");
exports.JSXIdentifier = function (node, parent) {
if (node.name === "this" && t.isReferenced(node, parent)) {
@ -185,7 +186,6 @@ var cleanJSXElementLiteralChild = function (child, args) {
var isFirstLine = i === 0;
var isLastLine = i === lines.length - 1;
var isLastNonEmptyLine = i === lastNonEmptyLine;
// replace rendered whitespace tabs with spaces
var trimmedLine = line.replace(/\t/g, " ");
@ -201,11 +201,12 @@ var cleanJSXElementLiteralChild = function (child, args) {
}
if (trimmedLine) {
if (!isLastNonEmptyLine) {
trimmedLine += " ";
var lastArg = args[args.length - 1];
if (t.isLiteral(lastArg) && isString(lastArg.value)) {
lastArg.value += " " + trimmedLine;
} else {
args.push(t.literal(trimmedLine));
}
args.push(t.literal(trimmedLine));
}
}
};

View File

@ -0,0 +1,13 @@
var x =
<div>
foo
{'bar'}
baz
<div>
buz
bang
</div>
qux
{null}
quack
</div>

View File

@ -0,0 +1,13 @@
var x = React.createElement(
"div",
null,
"foo bar baz",
React.createElement(
"div",
null,
"buz bang"
),
"qux",
null,
"quack"
);