コード例 #1
0
ファイル: TypeFluent.cs プロジェクト: oydevaas/TypeGap
        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);
        }
コード例 #2
0
ファイル: GapApiGenerator.cs プロジェクト: oydevaas/TypeGap
 public GapApiGenerator(TypeConverter converter, string indent, GapApiGeneratorOptions options)
 {
     _converter = converter;
     _options   = options;
     initIndent = indent;
 }
コード例 #3
0
ファイル: TypeFluent.cs プロジェクト: oydevaas/TypeGap
 public void Build(string outputPath, GapApiGeneratorOptions options = null)
 {
     WriteFile(outputPath, Build(options));
 }