Skip to content

Commit

Permalink
feat: update Templating/DependencyInjectionExtensions.cs
Browse files Browse the repository at this point in the history
  • Loading branch information
WeihanLi committed Jan 3, 2024
1 parent 181ee4a commit 98b1701
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions src/WeihanLi.Common/Templating/DependencyInjectionExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,25 +1,34 @@
// Copyright (c) Weihan Li. All rights reserved.
// Licensed under the Apache license.

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using WeihanLi.Common.Helpers;

namespace WeihanLi.Common.Templating;

public static class DependencyInjectionExtensions
{
public static IServiceCollection AddTemplating(this IServiceCollection services)
public static IServiceCollection AddTemplating(this IServiceCollection services, Action<TemplateEngineOptions>? optionsConfigure = null)
{
Guard.NotNull(services);
if (optionsConfigure != null)
services.Configure(optionsConfigure);

services.TryAddSingleton<ITemplateParser, DefaultTemplateParser>();
services.TryAddSingleton<ITemplateRenderer, DefaultTemplateRenderer>();
services.TryAddSingleton<ITemplateEngine, TemplateEngine>();

services.TryAddEnumerable(ServiceDescriptor.Singleton<IRenderMiddleware, DefaultRenderMiddleware>());
services.TryAddEnumerable(ServiceDescriptor.Singleton<IRenderMiddleware, EnvRenderMiddleware>());
services.TryAddEnumerable(ServiceDescriptor.Singleton<IRenderMiddleware, ConfigurationRenderMiddleware>());
services.TryAddEnumerable(ServiceDescriptor.Singleton(typeof(IRenderMiddleware), sp =>
{
var configuration = sp.GetRequiredService<IOptions<TemplateEngineOptions>>().Value.Configuration
?? sp.GetService<IConfiguration>();
return new ConfigurationRenderMiddleware(configuration);
}));
services.TryAddSingleton(sp =>
{
var pipelineBuilder = PipelineBuilder.CreateAsync<TemplateRenderContext>();
Expand Down

0 comments on commit 98b1701

Please sign in to comment.