86 lines
1.6 KiB
JavaScript
86 lines
1.6 KiB
JavaScript
var t = require("../../types");
|
|
|
|
exports._params = function (node, print) {
|
|
var self = this;
|
|
|
|
this.push("(");
|
|
|
|
print.join(node.params, {
|
|
separator: ", ",
|
|
iterator: function (param, i) {
|
|
var def = node.defaults && node.defaults[i];
|
|
if (def) {
|
|
self.push(" = ");
|
|
print(def);
|
|
}
|
|
}
|
|
});
|
|
|
|
if (node.rest) {
|
|
if (node.params.length) {
|
|
this.push(", ");
|
|
}
|
|
|
|
this.push("...");
|
|
print(node.rest);
|
|
}
|
|
|
|
this.push(")");
|
|
};
|
|
|
|
exports._method = function (node, print) {
|
|
var value = node.value;
|
|
var kind = node.kind;
|
|
var key = node.key;
|
|
|
|
if (!kind || kind === "init") {
|
|
if (value.generator) {
|
|
this.push("*");
|
|
}
|
|
} else {
|
|
this.push(kind + " ");
|
|
}
|
|
|
|
if (node.computed) {
|
|
this.push("[");
|
|
print(key);
|
|
this.push("]");
|
|
} else {
|
|
print(key);
|
|
}
|
|
|
|
this._params(value, print);
|
|
this.space();
|
|
print(value.body);
|
|
};
|
|
|
|
exports.MethodDefinition = function (node, print) {
|
|
if (node.static) {
|
|
this.push("static ");
|
|
}
|
|
|
|
this._method(node, print);
|
|
};
|
|
|
|
exports.FunctionDeclaration =
|
|
exports.FunctionExpression = function (node, print) {
|
|
this.push("function");
|
|
if (node.generator) this.push("*");
|
|
this.space();
|
|
if (node.id) print(node.id);
|
|
this._params(node, print);
|
|
this.space();
|
|
print(node.body);
|
|
};
|
|
|
|
exports.ArrowFunctionExpression = function (node, print) {
|
|
if (node.params.length === 1 && !node.defaults.length && !node.rest && t.isIdentifier(node.params[0])) {
|
|
print(node.params[0]);
|
|
} else {
|
|
this._params(node, print);
|
|
}
|
|
|
|
this.push(" => ");
|
|
print(node.body);
|
|
};
|