all files / dist/writers/ ParameterWriter.js

100% Statements 38/38
100% Branches 22/22
100% Functions 8/8
100% Lines 38/38
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51  23× 23× 23× 23× 23×   12× 12× 12× 10× 12×   12× 12× 12× 12×       12×   12× 12× 12×   10×          
"use strict";
var definitions_1 = require("./../definitions");
var WriteFlags_1 = require("./../WriteFlags");
var ParameterWriter = (function () {
    function ParameterWriter(writer, baseWriter, decoratorsWriter, typeWithDefaultExpressionWriter, classConstructorParameterScopeWriter) {
        this.writer = writer;
        this.baseWriter = baseWriter;
        this.decoratorsWriter = decoratorsWriter;
        this.typeWithDefaultExpressionWriter = typeWithDefaultExpressionWriter;
        this.classConstructorParameterScopeWriter = classConstructorParameterScopeWriter;
    }
    ParameterWriter.prototype.write = function (param, flags) {
        var _this = this;
        this.baseWriter.writeWrap(param, function () {
            if (!param.isRestParameter)
                _this.writeDecorators(param, flags);
            if (param instanceof definitions_1.ClassConstructorParameterDefinition) {
                if ((flags & WriteFlags_1.WriteFlags.HideScopeOnParameters) === 0)
                    _this.classConstructorParameterScopeWriter.writeScope(param.scope);
                _this.writer.conditionalWrite(param.isReadonly, "readonly ");
            }
            if (param.isRestParameter)
                _this.writeRestParameter(param);
            _this.writer.write(param.name);
            _this.writeIsOptional(param, flags);
            _this.typeWithDefaultExpressionWriter.write(param, flags, _this.getFallbackTypeText(param));
        });
    };
    ParameterWriter.prototype.writeRestParameter = function (param) {
        this.writer.write("...");
    };
    ParameterWriter.prototype.getFallbackTypeText = function (param) {
        return param.isRestParameter ? "any[]" : "any";
    };
    ParameterWriter.prototype.writeIsOptional = function (param, flags) {
        var isOptionalNotRest = param.isOptional && !param.isRestParameter;
        var willWriteDefaultExpression = param.defaultExpression != null && (flags & WriteFlags_1.WriteFlags.HideExpressions) !== WriteFlags_1.WriteFlags.HideExpressions;
        if (isOptionalNotRest && !willWriteDefaultExpression)
            this.writer.write("?");
    };
    ParameterWriter.prototype.writeDecorators = function (param, flags) {
        if (!(param instanceof definitions_1.BaseClassMethodParameterDefinition) && !(param instanceof definitions_1.ClassConstructorParameterDefinition))
            return;
        this.decoratorsWriter.write(param, flags, " ");
    };
    return ParameterWriter;
}());
exports.ParameterWriter = ParameterWriter;
 
//# sourceMappingURL=ParameterWriter.js.map