Пример #1
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }
            app.UseCors("all");
            var jsCodeBuilder = new JSClassContainer <ControllerBase>();

            jsCodeBuilder.Configuration.OutputDirectory = "wwwroot\\js";
            app.GenerateJSContext <ControllerBase>(jsCodeBuilder);
            app.UseHttpsRedirection();
            app.UseMvc();
            app.UseStaticFiles();
        }
Пример #2
0
        public JSClassContext(JSClassContainer <T> container)
        {
            Classes = new List <IJSClass>();
            StringBuilder outputFileContents     = new StringBuilder();
            var           outputDirectoryContext = Path.Combine(Directory.GetCurrentDirectory(), container.Configuration.OutputDirectory);

            if (Directory.Exists(outputDirectoryContext))
            {
                Directory.Move(outputDirectoryContext, Path.Combine(Directory.GetCurrentDirectory(), "deletedTemp"));
                Directory.Delete(Path.Combine(Directory.GetCurrentDirectory(), "deletedTemp"), true);
            }
            Directory.CreateDirectory(outputDirectoryContext);
            var shouldCreateMultipuleFiles = container.Configuration.MultiFileOutput;

            foreach (var filePath in container.InstanceConfiguration.AdditionalFiles.Keys)
            {
                var outputDir = Path.Combine(outputDirectoryContext, filePath);
                if (shouldCreateMultipuleFiles)
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(outputDir));
                    File.WriteAllText(outputDir, container.InstanceConfiguration.AdditionalFiles[filePath]);
                }
                else
                {
                    outputFileContents.AppendLine(container.InstanceConfiguration.AdditionalFiles[filePath]);
                }
            }
            foreach (var model in container.Models.Values)
            {
                var newClass  = container.InstanceConfiguration.CreateJSClassFromTypeStructure(model);
                var result    = newClass.GetText();
                var outputDir = Path.Combine(outputDirectoryContext, container.Configuration.ModelsFolder);
                if (shouldCreateMultipuleFiles)
                {
                    Directory.CreateDirectory(outputDir);
                    File.WriteAllText(Path.Combine(outputDir, model.TypeName + ".js"), result);
                }
                else
                {
                    outputFileContents.AppendLine(result);
                }
                Debug.WriteLine(result);
            }
            foreach (var classDef in container.Classes)
            {
                var newClass = container.InstanceConfiguration.CreateJSClassFromStructure(classDef);
                Classes.Add(newClass);
                var result = newClass.GetText();
                if (shouldCreateMultipuleFiles)
                {
                    File.WriteAllText(Path.Combine(outputDirectoryContext, classDef.Name + ".js"), result);
                }
                else
                {
                    outputFileContents.AppendLine(result);
                }
                Debug.WriteLine(result);
            }
            if (!shouldCreateMultipuleFiles)
            {
                File.WriteAllText(Path.Combine(outputDirectoryContext, container.Configuration.SingleFileOutputName), outputFileContents.ToString());
            }
        }