using Elsa.Expressions.Contracts; using Elsa.Expressions.Models; namespace Elsa.Workflows.Management.Services; public class ExpressionSyntaxRegistry : IExpressionSyntaxRegistry { private readonly IDictionary _expressionSyntaxDescriptors = new Dictionary(); public void Add(ExpressionSyntaxDescriptor descriptor) => _expressionSyntaxDescriptors[descriptor.Syntax] = descriptor; public void AddMany(IEnumerable descriptors) { foreach (var descriptor in descriptors) Add(descriptor); } public IEnumerable ListAll() => _expressionSyntaxDescriptors.Values; public ExpressionSyntaxDescriptor? Find(Func predicate) => _expressionSyntaxDescriptors.Values.FirstOrDefault(predicate); public ExpressionSyntaxDescriptor? Find(string syntax) => Find(x => x.Syntax == syntax); }