change acorn-ast-types to internal builders

This commit is contained in:
Sebastian McKenzie 2014-10-30 13:09:12 +11:00
parent e141a8b875
commit ea7ac4cd2d
20 changed files with 72 additions and 25 deletions

46
lib/6to5/builders.js Normal file
View File

@ -0,0 +1,46 @@
var _ = require("lodash");
var build = function (type, keys) {
return function () {
var args = arguments;
var node = { type: type };
_.each(keys, function (key, i) {
node[key] = args[i];
});
return node;
};
};
exports.identifier = build("Identifier", ["name"]);
exports.literal = build("Literal", ["value"]);
exports.functionExpression = build("FunctionExpression", ["id", "params", "body"]);
exports.returnStatement = build("ReturnStatement", ["argument"]);
exports.assignmentExpression = build("AssignmentExpression", ["operator", "left", "right"]);
exports.ifStatement = build("IfStatement", ["test", "consequent", "alternate"]);
exports.callExpression = build("CallExpression", ["callee", "arguments"]);
exports.blockStatement = build("BlockStatement", ["body"]);
exports.memberExpression = build("MemberExpression", ["object", "property", "computed"]);
exports.variableDeclaration = build("VariableDeclaration", ["kind", "declarations"]);
exports.variableDeclarator = build("VariableDeclarator", ["id", "init"]);
exports.arrayExpression = build("ArrayExpression", ["elements"]);
exports.binaryExpression = build("BinaryExpression", ["operator", "left", "right"]);
exports.expressionStatement = build("ExpressionStatement", ["expression"]);
exports.thisExpression = build("ThisExpression");
exports.objectExpression = build("ObjectExpression", ["properties"]);
exports.property = build("Property", ["kind", "key", "value"]);

View File

@ -5,7 +5,7 @@ var SHEBANG_REGEX = /^\#\!.*/;
var transform = require("./transform");
var generate = require("./generator");
var util = require("./util");
var b = require("acorn-ast-types").builders;
var b = require("./builders");
var _ = require("lodash");
function File(opts) {

View File

@ -2,7 +2,7 @@ module.exports = AMDFormatter;
var CommonJSFormatter = require("./common");
var util = require("../util");
var b = require("acorn-ast-types").builders;
var b = require("../builders");
var _ = require("lodash");
function AMDFormatter(file) {

View File

@ -1,7 +1,7 @@
module.exports = CommonJSFormatter;
var util = require("../util");
var b = require("acorn-ast-types").builders;
var b = require("../builders");
function CommonJSFormatter(file) {
this.file = file;

View File

@ -2,7 +2,7 @@ module.exports = UMDFormatter;
var AMDFormatter = require("./amd");
var util = require("../util");
var b = require("acorn-ast-types").builders;
var b = require("../builders");
var _ = require("lodash");
function UMDFormatter(file) {

View File

@ -1,6 +1,6 @@
var traverse = require("../traverse");
var util = require("../util");
var b = require("acorn-ast-types").builders;
var b = require("../builders");
var go = function (getBody, node, file) {
var argumentsId;

View File

@ -1,4 +1,4 @@
var b = require("acorn-ast-types").builders;
var b = require("../builders");
var _ = require("lodash");
module.exports = function (ast, file) {

View File

@ -1,5 +1,5 @@
var util = require("../util");
var b = require("acorn-ast-types").builders;
var b = require("../builders");
var single = function (node) {
var block = node.blocks[0];

View File

@ -1,6 +1,6 @@
var traverse = require("../traverse");
var util = require("../util");
var b = require("acorn-ast-types").builders;
var b = require("../builders");
var _ = require("lodash");
exports.ClassDeclaration = function (node, parent, file) {

View File

@ -1,5 +1,5 @@
var util = require("../util");
var b = require("acorn-ast-types").builders;
var b = require("../builders");
var _ = require("lodash");
exports.ObjectExpression = function (node, parent, file) {

View File

@ -1,6 +1,6 @@
var traverse = require("../traverse");
var util = require("../util");
var b = require("acorn-ast-types").builders;
var b = require("../builders");
var _ = require("lodash");
var buildVariableAssign = function (kind, id, init) {

View File

@ -1,5 +1,5 @@
var util = require("../util");
var b = require("acorn-ast-types").builders;
var b = require("../builders");
exports.ForOfStatement = function (node, parent, file) {
var left = node.left;

View File

@ -2,7 +2,7 @@
// https://github.com/RReverser/jsx-transpiler
var esutils = require("esutils");
var b = require("acorn-ast-types").builders;
var b = require("../builders");
var _ = require("lodash");
var JSX_ANNOTATION_REGEX = /^\*\s*@jsx\s+([^\s]+)/;
@ -11,9 +11,7 @@ exports.Program = function (node, parent, file) {
var jsx = "React.DOM";
// looking for namespace annotation
_.each(node.comments, function (comment) {
if (!comment.possiblyLeading) return;
_.each(node.leadingComments, function (comment) {
var matches = JSX_ANNOTATION_REGEX.exec(comment.value);
if (matches) jsx = matches[1];
});
@ -64,10 +62,13 @@ exports.XJSAttribute = {
exports.XJSOpeningElement = {
exit: function (node, parent, file) {
var tagExpr = node.name;
var tagName = tagExpr.name;
if (/[a-z]/.exec(tagName[0]) || _.contains(tagName, "-")) {
tagExpr = b.memberExpression(file.jsx, tagExpr, false);
if (tagExpr.type === "Identifier") {
var tagName = tagExpr.name;
if (/[a-z]/.exec(tagName[0]) || _.contains(tagName, "-")) {
tagExpr = b.memberExpression(file.jsx, tagExpr, false);
}
}
var props = node.attributes;

View File

@ -1,6 +1,6 @@
var traverse = require("../traverse");
var util = require("../util");
var b = require("acorn-ast-types").builders;
var b = require("../builders");
var _ = require("lodash");
exports.VariableDeclaration = function (node, parent, file) {

View File

@ -1,4 +1,4 @@
var b = require("acorn-ast-types").builders;
var b = require("../builders");
var _ = require("lodash");
var addDisplayName = function (id, call) {

View File

@ -1,5 +1,5 @@
var util = require("../util");
var b = require("acorn-ast-types").builders;
var b = require("../builders");
exports.Function = function (node, parent, file) {
if (!node.rest) return;

View File

@ -1,5 +1,5 @@
var util = require("../util");
var b = require("acorn-ast-types").builders;
var b = require("../builders");
var _ = require("lodash");
var getSpreadLiteral = function (spread, file) {

View File

@ -1,4 +1,4 @@
var b = require("acorn-ast-types").builders;
var b = require("../builders");
var _ = require("lodash");
var buildBinaryExpression = function (left, right) {

View File

@ -1,5 +1,5 @@
var rewritePattern = require("regexpu/rewrite-pattern");
var b = require("acorn-ast-types").builders;
var b = require("../builders");
var _ = require("lodash");
exports.Literal = function (node) {

View File

@ -1,4 +1,4 @@
var b = require("acorn-ast-types").builders;
var b = require("../builders");
module.exports = function (ast, file) {
var body = ast.program.body;