using System; using Elsa.Expressions; using Elsa.Scripting.Liquid.Filters; using Elsa.Scripting.Liquid.Options; using Elsa.Scripting.Liquid.Services; using Microsoft.Extensions.DependencyInjection; namespace Elsa.Scripting.Liquid.Extensions { public static class LiquidServiceCollectionExtensions { public static IServiceCollection AddLiquidExpressionEvaluator(this IServiceCollection services) { return services .TryAddProvider(ServiceLifetime.Scoped) .AddMemoryCache() .AddNotificationHandlers(typeof(LiquidServiceCollectionExtensions)) .AddScoped() .AddSingleton() .AddLiquidFilter("json") .AddLiquidFilter("base64") .AddLiquidFilter("workflow_definition_id") .AddLiquidFilter("signal_token"); } public static IServiceCollection AddLiquidFilter(this IServiceCollection services, string name) where T : class, ILiquidFilter { services.Configure(options => options.FilterRegistrations[name] = typeof(T)); services.AddScoped(); return services; } public static IServiceCollection RegisterLiquidTag(this IServiceCollection services, Action configure) { services.Configure(options => options.ParserConfiguration.Add(configure)); return services; } } }