Add --harmony option to jsx.

This commit is contained in:
cpojer 2014-01-03 00:51:42 +01:00
parent 1f5c8d21d8
commit 8dbc530d1c
4 changed files with 19 additions and 10 deletions

19
bin/jsx
View File

@ -2,14 +2,23 @@
// -*- mode: js -*-
"use strict";
var visitors = require('../vendor/fbtransform/visitors').transformVisitors;
var visitors = require('../vendor/fbtransform/visitors');
var transform = require('jstransform').transform;
require("commoner").version(
require("../package.json").version
require('commoner').version(
require('../package.json').version
).resolve(function(id) {
return this.readModuleP(id);
}).process(function(id, source) {
}).option(
'--harmony',
'Turns on JS transformations such as ES6 Classes etc.'
).process(function(id, source) {
// This is where JSX, ES6, etc. desugaring happens.
return transform(visitors.react, source).code;
var visitorList;
if (this.options.harmony) {
visitorList = visitors.getAllVisitors();
} else {
visitorList = visitors.transformVisitors.react;
}
return transform(visitorList, source).code;
});

View File

@ -2,7 +2,7 @@
// -*- mode: js -*-
"use strict";
var getVisitorsList = require('../vendor/fbtransform/visitors').getVisitorsList;
var getAllVisitors = require('../vendor/fbtransform/visitors').getAllVisitors;
var transform = require('jstransform').transform;
var propagate = require("../vendor/constants").propagate;
@ -31,7 +31,7 @@ require("commoner").version(
var constants = context.config.constants || {};
// This is where JSX, ES6, etc. desugaring happens.
source = transform(getVisitorsList(), source).code;
source = transform(getAllVisitors(), source).code;
// Constant propagation means removing any obviously dead code after
// replacing constant expressions with literal (boolean) values.

View File

@ -33,7 +33,7 @@
"url": "https://github.com/facebook/react"
},
"dependencies": {
"commoner": "~0.8.12",
"commoner": "~0.8.13",
"esprima-fb": "~2001.1001.0-dev-harmony-fb",
"jstransform": "~2.0.2"
},

View File

@ -41,7 +41,7 @@ var transformRunOrder = [
* @param {array?} excludes
* @return {array}
*/
function getVisitorsList(excludes) {
function getAllVisitors(excludes) {
var ret = [];
for (var i = 0, il = transformRunOrder.length; i < il; i++) {
if (!excludes || excludes.indexOf(transformRunOrder[i]) === -1) {
@ -51,5 +51,5 @@ function getVisitorsList(excludes) {
return ret;
}
exports.getVisitorsList = getVisitorsList;
exports.getAllVisitors = getAllVisitors;
exports.transformVisitors = transformVisitors;