109 lines
2.6 KiB
JavaScript
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");
|
|
};
|