XJS -> JSX
Part 1: change all of our methods and AST node types. Part 2: Rename files so there is no trace of XJS
Paul O’Shannessy committed
Feb 25, 2015 at 11:54 UTC
48e54da484bc3416572fb48bc22d748a60ecd54f
2 files changed
+25
-25
vendor/fbtransform/transforms/jsx.js
renamed
+5
-5
@@ -11,7 +11,7 @@
11
var Syntax = require('jstransform').Syntax;
12
var utils = require('jstransform/src/utils');
13
14
-function renderXJSLiteral(object, isLast, state, start, end) {
14
+function renderJSXLiteral(object, isLast, state, start, end) {
15
var lines = object.value.split(/\r\n|\n|\r/);
16
17
if (start) {
@@ -75,13 +75,13 @@ function renderXJSLiteral(object, isLast, state, start, end) {
75
utils.move(object.range[1], state);
76
}
77
78
-function renderXJSExpressionContainer(traverse, object, isLast, path, state) {
78
+function renderJSXExpressionContainer(traverse, object, isLast, path, state) {
79
// Plus 1 to skip `{`.
80
utils.move(object.range[0] + 1, state);
81
utils.catchup(object.expression.range[0], state);
82
traverse(object.expression, path, state);
83
84
- if (!isLast && object.expression.type !== Syntax.XJSEmptyExpression) {
84
+ if (!isLast && object.expression.type !== Syntax.JSXEmptyExpression) {
85
// If we need to append a comma, make sure to do so after the expression.
86
utils.catchup(object.expression.range[1], state, trimLeft);
87
utils.append(', ', state);
@@ -105,7 +105,7 @@ function trimLeft(value) {
105
return value.replace(/^[ ]+/, '');
106
}
107
108
-exports.renderXJSExpressionContainer = renderXJSExpressionContainer;
109
-exports.renderXJSLiteral = renderXJSLiteral;
108
+exports.renderJSXExpressionContainer = renderJSXExpressionContainer;
109
+exports.renderJSXLiteral = renderJSXLiteral;
110
exports.quoteAttrName = quoteAttrName;
111
exports.trimLeft = trimLeft;
vendor/fbtransform/transforms/react.js
+20
-20
@@ -12,12 +12,12 @@
12
var Syntax = require('jstransform').Syntax;
13
var utils = require('jstransform/src/utils');
14
15
-var renderXJSExpressionContainer =
16
- require('./xjs').renderXJSExpressionContainer;
17
-var renderXJSLiteral = require('./xjs').renderXJSLiteral;
18
-var quoteAttrName = require('./xjs').quoteAttrName;
15
+var renderJSXExpressionContainer =
16
+ require('./jsx').renderJSXExpressionContainer;
17
+var renderJSXLiteral = require('./jsx').renderJSXLiteral;
18
+var quoteAttrName = require('./jsx').quoteAttrName;
19
20
-var trimLeft = require('./xjs').trimLeft;
20
+var trimLeft = require('./jsx').trimLeft;
21
22
/**
23
* Customized desugar processor for React JSX. Currently:
@@ -50,20 +50,20 @@ function visitReactTag(traverse, object, path, state) {
50
51
utils.catchup(openingElement.range[0], state, trimLeft);
52
53
- if (nameObject.type === Syntax.XJSNamespacedName && nameObject.namespace) {
53
+ if (nameObject.type === Syntax.JSXNamespacedName && nameObject.namespace) {
54
throw new Error('Namespace tags are not supported. ReactJSX is not XML.');
55
}
56
57
// We assume that the React runtime is already in scope
58
utils.append('React.createElement(', state);
59
60
- if (nameObject.type === Syntax.XJSIdentifier && isTagName(nameObject.name)) {
60
+ if (nameObject.type === Syntax.JSXIdentifier && isTagName(nameObject.name)) {
61
utils.append('"' + nameObject.name + '"', state);
62
utils.move(nameObject.range[1], state);
63
} else {
64
// Use utils.catchup in this case so we can easily handle
65
- // XJSMemberExpressions which look like Foo.Bar.Baz. This also handles
66
- // XJSIdentifiers that aren't fallback tags.
65
+ // JSXMemberExpressions which look like Foo.Bar.Baz. This also handles
66
+ // JSXIdentifiers that aren't fallback tags.
67
utils.move(nameObject.range[0], state);
68
utils.catchup(nameObject.range[1], state);
69
}
@@ -73,7 +73,7 @@ function visitReactTag(traverse, object, path, state) {
73
var hasAttributes = attributesObject.length;
74
75
var hasAtLeastOneSpreadProperty = attributesObject.some(function(attr) {
76
- return attr.type === Syntax.XJSSpreadAttribute;
76
+ return attr.type === Syntax.JSXSpreadAttribute;
77
});
78
79
// if we don't have any attributes, pass in null
@@ -92,7 +92,7 @@ function visitReactTag(traverse, object, path, state) {
92
attributesObject.forEach(function(attr, index) {
93
var isLast = index === attributesObject.length - 1;
94
95
- if (attr.type === Syntax.XJSSpreadAttribute) {
95
+ if (attr.type === Syntax.JSXSpreadAttribute) {
96
// Close the previous object or initial object
97
if (!previousWasSpread) {
98
utils.append('}, ', state);
@@ -125,7 +125,7 @@ function visitReactTag(traverse, object, path, state) {
125
126
// If the next attribute is a spread, we're effective last in this object
127
if (!isLast) {
128
- isLast = attributesObject[index + 1].type === Syntax.XJSSpreadAttribute;
128
+ isLast = attributesObject[index + 1].type === Syntax.JSXSpreadAttribute;
129
}
130
131
if (attr.name.namespace) {
@@ -154,9 +154,9 @@ function visitReactTag(traverse, object, path, state) {
154
// Use catchupNewlines to skip over the '=' in the attribute
155
utils.catchupNewlines(attr.value.range[0], state);
156
if (attr.value.type === Syntax.Literal) {
157
- renderXJSLiteral(attr.value, isLast, state);
157
+ renderJSXLiteral(attr.value, isLast, state);
158
} else {
159
- renderXJSExpressionContainer(traverse, attr.value, isLast, path, state);
159
+ renderJSXExpressionContainer(traverse, attr.value, isLast, path, state);
160
}
161
}
162
@@ -189,8 +189,8 @@ function visitReactTag(traverse, object, path, state) {
189
var lastRenderableIndex;
190
191
childrenToRender.forEach(function(child, index) {
192
- if (child.type !== Syntax.XJSExpressionContainer ||
193
- child.expression.type !== Syntax.XJSEmptyExpression) {
192
+ if (child.type !== Syntax.JSXExpressionContainer ||
193
+ child.expression.type !== Syntax.JSXEmptyExpression) {
194
lastRenderableIndex = index;
195
}
196
});
@@ -205,9 +205,9 @@ function visitReactTag(traverse, object, path, state) {
205
var isLast = index >= lastRenderableIndex;
206
207
if (child.type === Syntax.Literal) {
208
- renderXJSLiteral(child, isLast, state);
209
- } else if (child.type === Syntax.XJSExpressionContainer) {
210
- renderXJSExpressionContainer(traverse, child, isLast, path, state);
208
+ renderJSXLiteral(child, isLast, state);
209
+ } else if (child.type === Syntax.JSXExpressionContainer) {
210
+ renderJSXExpressionContainer(traverse, child, isLast, path, state);
211
} else {
212
traverse(child, path, state);
213
if (!isLast) {
@@ -234,7 +234,7 @@ function visitReactTag(traverse, object, path, state) {
234
}
235
236
visitReactTag.test = function(object, path, state) {
237
- return object.type === Syntax.XJSElement;
237
+ return object.type === Syntax.JSXElement;
238
};
239
240
exports.visitorList = [