@samitouri / QOS-React-2 / commits / a39b8fda70

utils.* is now used everywhere

Andreas Svensson committed Nov 9, 2013 at 01:08 UTC a39b8fda70bdad652373223faeaba2d6ca8770ba
2 files changed +35 -42
vendor/fbtransform/transforms/react.js
+31 -36
@@ -17,12 +17,7 @@
17 "use strict";
18
19 var Syntax = require('esprima-fb').Syntax;
20 -
21 -var catchup = require('jstransform/src/utils').catchup;
22 -var catchupWhiteSpace = require('jstransform/src/utils').catchupWhiteSpace;
23 -var append = require('jstransform/src/utils').append;
24 -var move = require('jstransform/src/utils').move;
25 -var getDocblock = require('jstransform/src/utils').getDocblock;
20 +var utils = require('jstransform/src/utils');
21
22 var FALLBACK_TAGS = require('./xjs').knownTags;
23 var renderXJSExpressionContainer =
@@ -56,9 +51,9 @@ var JSX_ATTRIBUTE_TRANSFORMS = {
51 };
52
53 function visitReactTag(traverse, object, path, state) {
59 - var jsxObjIdent = getDocblock(state).jsx;
54 + var jsxObjIdent = utils.getDocblock(state).jsx;
55
61 - catchup(object.openingElement.range[0], state);
56 + utils.catchup(object.openingElement.range[0], state);
57
58 if (object.name.namespace) {
59 throw new Error(
@@ -66,12 +61,12 @@ function visitReactTag(traverse, object, path, state) {
61 }
62
63 var isFallbackTag = FALLBACK_TAGS[object.name.name];
69 - append(
64 + utils.append(
65 (isFallbackTag ? jsxObjIdent + '.' : '') + (object.name.name) + '(',
66 state
67 );
68
74 - move(object.name.range[1], state);
69 + utils.move(object.name.range[1], state);
70
71 var childrenToRender = object.children.filter(function(child) {
72 return !(child.type === Syntax.Literal && !child.value.match(/\S/));
@@ -79,12 +74,12 @@ function visitReactTag(traverse, object, path, state) {
74
75 // if we don't have any attributes, pass in null
76 if (object.attributes.length === 0) {
82 - append('null', state);
77 + utils.append('null', state);
78 }
79
80 // write attributes
81 object.attributes.forEach(function(attr, index) {
87 - catchup(attr.range[0], state);
82 + utils.catchup(attr.range[0], state);
83 if (attr.name.namespace) {
84 throw new Error(
85 'Namespace attributes are not supported. ReactJSX is not XML.');
@@ -94,27 +89,27 @@ function visitReactTag(traverse, object, path, state) {
89 var isLast = index === object.attributes.length - 1;
90
91 if (isFirst) {
97 - append('{', state);
92 + utils.append('{', state);
93 }
94
100 - append(quoteAttrName(name), state);
101 - append(':', state);
95 + utils.append(quoteAttrName(name), state);
96 + utils.append(':', state);
97
98 if (!attr.value) {
99 state.g.buffer += 'true';
100 state.g.position = attr.name.range[1];
101 if (!isLast) {
107 - append(',', state);
102 + utils.append(',', state);
103 }
104 } else {
110 - move(attr.name.range[1], state);
105 + utils.move(attr.name.range[1], state);
106 // Use catchupWhiteSpace to skip over the '=' in the attribute
112 - catchupWhiteSpace(attr.value.range[0], state);
107 + utils.catchupWhiteSpace(attr.value.range[0], state);
108 if (JSX_ATTRIBUTE_TRANSFORMS[attr.name.name]) {
114 - append(JSX_ATTRIBUTE_TRANSFORMS[attr.name.name](attr), state);
115 - move(attr.value.range[1], state);
109 + utils.append(JSX_ATTRIBUTE_TRANSFORMS[attr.name.name](attr), state);
110 + utils.move(attr.value.range[1], state);
111 if (!isLast) {
117 - append(',', state);
112 + utils.append(',', state);
113 }
114 } else if (attr.value.type === Syntax.Literal) {
115 renderXJSLiteral(attr.value, isLast, state);
@@ -124,26 +119,26 @@ function visitReactTag(traverse, object, path, state) {
119 }
120
121 if (isLast) {
127 - append('}', state);
122 + utils.append('}', state);
123 }
124
130 - catchup(attr.range[1], state);
125 + utils.catchup(attr.range[1], state);
126 });
127
128 if (!object.selfClosing) {
134 - catchup(object.openingElement.range[1] - 1, state);
135 - move(object.openingElement.range[1], state);
129 + utils.catchup(object.openingElement.range[1] - 1, state);
130 + utils.move(object.openingElement.range[1], state);
131 }
132
133 // filter out whitespace
134 if (childrenToRender.length > 0) {
140 - append(', ', state);
135 + utils.append(', ', state);
136
137 object.children.forEach(function(child) {
138 if (child.type === Syntax.Literal && !child.value.match(/\S/)) {
139 return;
140 }
146 - catchup(child.range[0], state);
141 + utils.catchup(child.range[0], state);
142
143 var isLast = child === childrenToRender[childrenToRender.length - 1];
144
@@ -152,34 +147,34 @@ function visitReactTag(traverse, object, path, state) {
147 } else if (child.type === Syntax.XJSExpressionContainer) {
148 renderXJSExpressionContainer(traverse, child, isLast, path, state);
149 } else {
155 - traverse(child, path, state);
150 + utils.traverse(child, path, state);
151 if (!isLast) {
157 - append(',', state);
152 + utils.append(',', state);
153 state.g.buffer = state.g.buffer.replace(/(\s*),$/, ',$1');
154 }
155 }
156
162 - catchup(child.range[1], state);
157 + utils.catchup(child.range[1], state);
158 });
159 }
160
161 if (object.selfClosing) {
162 // everything up to />
168 - catchup(object.openingElement.range[1] - 2, state);
169 - move(object.openingElement.range[1], state);
163 + utils.catchup(object.openingElement.range[1] - 2, state);
164 + utils.move(object.openingElement.range[1], state);
165 } else {
166 // everything up to </ sdflksjfd>
172 - catchup(object.closingElement.range[0], state);
173 - move(object.closingElement.range[1], state);
167 + utils.catchup(object.closingElement.range[0], state);
168 + utils.move(object.closingElement.range[1], state);
169 }
170
176 - append(')', state);
171 + utils.append(')', state);
172 return false;
173 }
174
175 visitReactTag.test = function(object, path, state) {
176 // only run react when react @jsx namespace is specified in docblock
182 - var jsx = getDocblock(state).jsx;
177 + var jsx = utils.getDocblock(state).jsx;
178 return object.type === Syntax.XJSElement && jsx && jsx.length;
179 };
180
vendor/fbtransform/transforms/reactDisplayName.js
+4 -6
@@ -17,9 +17,7 @@
17 "use strict";
18
19 var Syntax = require('esprima-fb').Syntax;
20 -var catchup = require('jstransform/src/utils').catchup;
21 -var append = require('jstransform/src/utils').append;
22 -var getDocblock = require('jstransform/src/utils').getDocblock;
20 +var utils = require('jstransform/src/utils');
21
22 /**
23 * Transforms the following:
@@ -48,8 +46,8 @@ function visitReactDisplayName(traverse, object, path, state) {
46 object.init['arguments'][0].type === Syntax.ObjectExpression) {
47
48 var displayName = object.id.name;
51 - catchup(object.init['arguments'][0].range[0] + 1, state);
52 - append("displayName: '" + displayName + "',", state);
49 + utils.catchup(object.init['arguments'][0].range[0] + 1, state);
50 + utils.append("displayName: '" + displayName + "',", state);
51 }
52 }
53
@@ -57,7 +55,7 @@ function visitReactDisplayName(traverse, object, path, state) {
55 * Will only run on @jsx files for now.
56 */
57 visitReactDisplayName.test = function(object, path, state) {
60 - return object.type === Syntax.VariableDeclarator && !!getDocblock(state).jsx;
58 + return object.type === Syntax.VariableDeclarator && !!utils.getDocblock(state).jsx;
59 };
60
61 exports.visitReactDisplayName = visitReactDisplayName;