"use strict";
var definitions_1 = require("./../definitions");
var ParametersWriter = (function () {
function ParametersWriter(writer, decoratorWriter, parameterWriter, parameterWithDestructuringWriter, typeWriter) {
this.writer = writer;
this.decoratorWriter = decoratorWriter;
this.parameterWriter = parameterWriter;
this.parameterWithDestructuringWriter = parameterWithDestructuringWriter;
this.typeWriter = typeWriter;
}
ParametersWriter.prototype.write = function (def, flags) {
var _this = this;
var thisType = def.thisType;
this.writer.write("(");
this.writeThisType(thisType);
def.parameters.forEach(function (param, i) {
_this.writer.conditionalWrite(i > 0 || thisType != null, ", ");
_this.writeParameter(param, flags);
});
this.writer.write(")");
};
ParametersWriter.prototype.writeParameter = function (param, flags) {
this.writeDecorators(param, flags);
if (param.destructuringProperties.length === 0)
this.parameterWriter.write(param, flags);
else
this.parameterWithDestructuringWriter.write(param, flags);
};
ParametersWriter.prototype.writeDecorators = function (param, flags) {
var _this = this;
if (!(param instanceof definitions_1.BaseClassMethodParameterDefinition) && !(param instanceof definitions_1.ClassConstructorParameterDefinition))
return;
param.decorators.forEach(function (dec) {
_this.decoratorWriter.write(dec, flags);
_this.writer.write(" ");
});
};
ParametersWriter.prototype.writeThisType = function (thisType) {
if (thisType == null)
return;
this.writer.write("this");
this.typeWriter.writeWithColon(thisType, "any");
};
return ParametersWriter;
}());
exports.ParametersWriter = ParametersWriter;
//# sourceMappingURL=ParametersWriter.js.map
|