public string Build(GapApiGeneratorOptions options = null) { var services = new StringWriter(); var servicesWriter = new CustomIndentedTextWriter(services, _indent); var enums = new StringWriter(); var enumsWriter = new CustomIndentedTextWriter(enums, _indent); var globals = new StringWriter(); var globalsWriter = new CustomIndentedTextWriter(globals, _indent); var definitions = new StringWriter(); var definitionsWriter = new CustomIndentedTextWriter(definitions, _indent); TypeScriptFluent fluent = new TypeScriptFluent(); fluent.WithConvertor <Guid>(c => "string"); fluent.WithIndentation(_indent); fluent.WithModelVisitor(_modelVisitor); var converter = new TypeConverter(_namespace, fluent); fluent.WithDictionaryMemberFormatter(converter); if (!string.IsNullOrEmpty(_namespace)) { fluent.WithModuleNameFormatter(m => _namespace); } ProcessTypes(_general, fluent); fluent.ModelBuilder.Build(); // this is to fix up manually added types before GapApiGenerator var apiGen = new GapApiGenerator(converter, _indent, options ?? new GapApiGeneratorOptions()); apiGen.WriteServices(_apis.ToArray(), servicesWriter); var signalr = new SignalRGenerator(); signalr.WriteHubs(_hubs.ToArray(), converter, servicesWriter); var tsClassDefinitions = fluent.Generate(TsGeneratorOutput.Properties | TsGeneratorOutput.Fields); definitionsWriter.Write(tsClassDefinitions); _enumGenerator.WriteEnums(enumsWriter, globalsWriter, definitionsWriter, fluent.ModelBuilder.Build().Enums, converter); string prepended = _generateNotice ? Resx.GeneratedNotice + "\r\n\r\n" : ""; prepended += services.GetStringBuilder() + Environment.NewLine + "declare global {" + (definitions.GetStringBuilder().ToString() + enums.GetStringBuilder()).Replace("declare namespace", "namespace").Replace("\n", "\n ").TrimEnd() + Environment.NewLine + "}" + Environment.NewLine + globals.GetStringBuilder(); return(prepended); }
public GapApiGenerator(TypeConverter converter, string indent, GapApiGeneratorOptions options) { _converter = converter; _options = options; initIndent = indent; }
public void Build(string outputPath, GapApiGeneratorOptions options = null) { WriteFile(outputPath, Build(options)); }