/// <summary> /// Generates class definition and appends it to the output. /// </summary> /// <param name="classModel">The class to generate definition for.</param> /// <param name="sb">The output.</param> /// <param name="generatorOutput"></param> protected virtual void AppendConstantModule(TsClass classModel, ScriptBuilder sb) { if (!classModel.Constants.Any()) { return; } string typeName = this.GetTypeName(classModel); sb.AppendLineIndented(string.Format("export namespace {0} {{", typeName)); using (sb.IncreaseIndentation()) { foreach (var property in classModel.Constants) { if (property.IsIgnored) { continue; } _docAppender.AppendConstantModuleDoc(sb, property, this.GetPropertyName(property), this.GetPropertyType(property)); sb.AppendFormatIndented("export const {0}: {1} = {2};", this.GetPropertyName(property), this.GetPropertyType(property), this.GetPropertyConstantValue(property)); sb.AppendLine(); } } sb.AppendLineIndented("}"); _generatedClasses.Add(classModel); }
protected virtual void AppendEnumDefinition(TsEnum enumModel, ScriptBuilder sb, TsGeneratorOutput output) { string typeName = this.GetTypeName(enumModel); string visibility = (output & TsGeneratorOutput.Enums) == TsGeneratorOutput.Enums || (output & TsGeneratorOutput.Constants) == TsGeneratorOutput.Constants ? "export " : ""; _docAppender.AppendEnumDoc(sb, enumModel, typeName); string constSpecifier = this.GenerateConstEnums ? "const " : string.Empty; sb.AppendLineIndented(string.Format("{0}{2}enum {1} {{", visibility, typeName, constSpecifier)); using (sb.IncreaseIndentation()) { int i = 1; foreach (var v in enumModel.Values) { _docAppender.AppendEnumValueDoc(sb, v); sb.AppendLineIndented(string.Format(i < enumModel.Values.Count ? "{0} = {1}," : "{0} = {1}", v.Name, v.Value)); i++; } } sb.AppendLineIndented("}"); _generatedEnums.Add(enumModel); }
/// <summary> /// Generates class definition and appends it to the output. /// </summary> /// <param name="classModel">The class to generate definition for.</param> /// <param name="sb">The output.</param> /// <param name="generatorOutput"></param> protected virtual void AppendClassDefinition(TsClass classModel, ScriptBuilder sb, TsGeneratorOutput generatorOutput) { string typeName = this.GetTypeName(classModel); string visibility = this.GetTypeVisibility(classModel, typeName) ? "export " : ""; _docAppender.AppendClassDoc(sb, classModel, typeName); sb.AppendFormatIndented("{0}class {1}", visibility, typeName); if (classModel.BaseType != null) { sb.AppendFormat(" extends {0}", this.GetFullyQualifiedTypeName(classModel.BaseType)); } if (classModel.Interfaces.Count > 0) { var implementations = classModel.Interfaces.Select(GetFullyQualifiedTypeName).ToArray(); var prefixFormat = classModel.Type.IsInterface ? " extends {0}" : classModel.BaseType != null ? " , {0}" : " extends {0}"; sb.AppendFormat(prefixFormat, string.Join(" ,", implementations)); } sb.AppendLine(" {"); var members = new List <TsProperty>(); if ((generatorOutput & TsGeneratorOutput.Properties) == TsGeneratorOutput.Properties) { members.AddRange(classModel.Properties); } if ((generatorOutput & TsGeneratorOutput.Fields) == TsGeneratorOutput.Fields) { members.AddRange(classModel.Fields); } using (sb.IncreaseIndentation()) { foreach (var property in members) { if (property.IsIgnored) { continue; } _docAppender.AppendPropertyDoc(sb, property, this.GetPropertyName(property), this.GetPropertyType(property)); sb.AppendLineIndented(string.Format("{0}: {1};", this.GetPropertyName(property), this.GetPropertyType(property))); } } sb.AppendLineIndented("}"); _generatedClasses.Add(classModel); }
protected virtual void AppendEnumDefinition(TsEnum enumModel, ScriptBuilder sb, TsGeneratorOutput output) { string typeName = this.GetTypeName(enumModel); string visibility = (output & TsGeneratorOutput.Enums) == TsGeneratorOutput.Enums || (output & TsGeneratorOutput.Constants) == TsGeneratorOutput.Constants ? "export " : ""; _docAppender.AppendEnumDoc(sb, enumModel, typeName); string constSpecifier = this.GenerateConstEnums ? "const " : string.Empty; sb.AppendLineIndented(string.Format("{0}{2}enum {1} {{", visibility, typeName, constSpecifier)); using (sb.IncreaseIndentation()) { int i = 1; string valuesList = ""; string descriptionsList = ""; foreach (var v in enumModel.Values) { _docAppender.AppendEnumValueDoc(sb, v); bool appendComma = enumModel.IsOutputValuesList || enumModel.IsOutputDescriptionsList || (i < enumModel.Values.Count); if (enumModel.IsValueAsStringOfName) { sb.AppendLineIndented(string.Format(appendComma ? "{0} = '{0}'," : "{0} = '{0}'", v.Name)); if (enumModel.IsOutputValuesList) { valuesList += string.Format((i < enumModel.Values.Count) ? "{0}|" : "{0}", v.Name); } } else { sb.AppendLineIndented(string.Format(appendComma ? "{0} = {1}," : "{0} = {1}", v.Name, v.Value)); if (enumModel.IsOutputValuesList) { valuesList += string.Format(i < enumModel.Values.Count ? "{0}|" : "{0}", v.Value); } } if (enumModel.IsOutputDescriptionsList) { descriptionsList += string.Format(i < enumModel.Values.Count ? "{0}|" : "{0}", v.Description); } i++; } if (enumModel.IsOutputValuesList) { sb.AppendLineIndented(string.Format(enumModel.IsOutputDescriptionsList ? "_ValuesList = '{0}'," : "_ValuesList = '{0}'", valuesList)); } if (enumModel.IsOutputDescriptionsList) { sb.AppendLineIndented(string.Format("_DescriptionsList = '{0}'", descriptionsList)); } } sb.AppendLineIndented("}"); _generatedEnums.Add(enumModel); }