@microsoft.azure/autorest.incubator
Version:
AutoRest incubator project
56 lines • 1.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const initializer_1 = require("../../common/initializer");
const expression_1 = require("../../csharp/code-dom/expression");
const statement_1 = require("../../csharp/code-dom/statements/statement");
/** represents a locally declared variable */
class LocalVariable extends initializer_1.Initializer {
constructor(name, type, objectIntializer) {
super();
this.name = name;
this.type = type;
this.apply(objectIntializer);
}
get value() {
return `${this.name}`;
}
get implementation() {
return this.declarationStatement.implementation;
}
get declarationStatement() {
return statement_1.toStatement(`${this.declarationExpression};`);
}
get declarationExpression() {
return expression_1.toExpression(`${this.type.declaration} ${this.name}${this.initializer ? ` = ${expression_1.valueOf(this.initializer)}` : ''}`);
}
assign(expression) {
return `${this.name} = ${expression_1.valueOf(expression)};`;
}
assignPrivate(expression) {
return this.assign(expression);
}
toString() {
return expression_1.valueOf(this);
}
invokeMethod(methodName, ...parameters) {
const e = `${expression_1.valueOf(this)}.${methodName}(${parameters.joinWith(expression_1.valueOf)})`;
return {
implementation: `${e};`,
value: e,
};
}
member(memberName) {
return new MemberVariable(this, memberName);
}
}
exports.LocalVariable = LocalVariable;
class MemberVariable extends LocalVariable {
constructor(variable, memberName, objectIntializer) {
super(`${variable}.${memberName}`, { declaration: 'var' });
this.variable = variable;
this.memberName = memberName;
this.apply(objectIntializer);
}
}
exports.MemberVariable = MemberVariable;
//# sourceMappingURL=variable.js.map