babel/lib/6to5/generators/expressions.js
2014-10-30 17:30:05 +11:00

109 lines
2.6 KiB
JavaScript

exports.UnaryExpression = function (node, print) {
var code = node.operator;
if (/[a-z]$/.test(node.operator)) code += " ";
code += this._maybeParans(node.argument, print);
return code;
};
exports.UpdateExpression = function (node, print) {
var parts = [print(node.argument)];
parts.push(node.operator);
if (node.prefix) parts.reverse();
return parts.join("");
};
exports.ConditionalExpression = function (node, print) {
var code = "(";
code += print(node.test);
code += " ? ";
code += print(node.consequent);
code += " : ";
code += print(node.alternate);
code += ")";
return code;
};
exports.NewExpression = function (node, print) {
var code = "new ";
code += print(node.callee);
if (node.arguments) {
code += "(" + node.arguments.map(print).join(", ") + ")";
}
return code;
};
exports.SequenceExpression = function (node, print) {
return node.expressions.map(print).join(", ");
};
exports.ThisExpression = function () {
return "this";
};
exports.CallExpression = function (node, print) {
var code = "";
code += this._maybeParans(node.callee, print);
code += "(" + node.arguments.map(this.buildPrint(node)).join(", ") + ")";
return code;
};
exports._maybeParans = function (node, print) {
var code = print(node);
if (node.type === "AssignmentExpression" ||
node.type === "FunctionExpression" ||
node.type === "BinaryExpression") {
code = "(" + code + ")";
}
return code;
};
exports.YieldExpression = function (node, print) {
var code = "yield";
if (node.delegate) code += "*";
if (node.argument) code += " " + print(node.argument);
return code;
};
exports.EmptyStatement = function () {
return "";
};
exports.ExpressionStatement = function (node, print) {
return print(node.expression) + ";";
};
exports.BinaryExpression =
exports.LogicalExpression =
exports.AssignmentExpression = function (node, print) {
return print(node.left) + " " + node.operator + " " + print(node.right);
};
exports.MemberExpression = function (node, print) {
var code = this._maybeParans(node.object, print);
if (node.computed) {
code += "[" + print(node.property) + "]";
} else {
code += "." + print(node.property);
}
return code;
};
exports.ParenthesizedExpression = function (node, print) {
throw new Error("ParenthesizedExpression");
};
exports.TaggedTemplateExpression = function (node, print) {
throw new Error("TaggedTemplateExpression");
};
exports.TemplateElement = function (node, print) {
throw new Error("TemplateElement");
};
exports.TemplateLiteral = function (node, print) {
throw new Error("TemplateLiteral");
};