Skip to content

Commit b76e060

Browse files
committed
Accept a single name resolver rather than an ordered list when providing one to Compile() etc.
1 parent d9e865f commit b76e060

File tree

4 files changed

+24
-27
lines changed

4 files changed

+24
-27
lines changed
Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
1-
using System.Collections.Generic;
2-
using System.Linq;
3-
using Serilog.Expressions.Runtime;
1+
using Serilog.Expressions.Runtime;
42

53
namespace Serilog.Expressions.Compilation
64
{
75
static class DefaultFunctionNameResolver
86
{
9-
public static NameResolver Build(IEnumerable<NameResolver>? orderedResolvers)
7+
public static NameResolver Build(NameResolver? additionalNameResolver)
108
{
119
var defaultResolver = new StaticMemberNameResolver(typeof(RuntimeOperators));
12-
return orderedResolvers == null
10+
return additionalNameResolver == null
1311
? (NameResolver) defaultResolver
14-
: new OrderedNameResolver(
15-
new NameResolver[] {defaultResolver}.Concat(orderedResolvers));
12+
: new OrderedNameResolver(new[] {defaultResolver, additionalNameResolver });
1613
}
1714
}
1815
}

src/Serilog.Expressions/Expressions/SerilogExpression.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ public static class SerilogExpression
3232
/// Create an evaluation function based on the provided expression.
3333
/// </summary>
3434
/// <param name="expression">An expression.</param>
35-
/// <param name="orderedResolvers">Optionally, an ordered list of <see cref="NameResolver"/>s
36-
/// from which to resolve function names that appear in the template.</param>
35+
/// <param name="nameResolver">Optionally, a <see cref="NameResolver"/>
36+
/// with which to resolve function names that appear in the template.</param>
3737
/// <returns>A function that evaluates the expression in the context of a log event.</returns>
3838
public static CompiledExpression Compile(
3939
string expression,
40-
IEnumerable<NameResolver>? orderedResolvers = null)
40+
NameResolver? nameResolver = null)
4141
{
4242
if (expression == null) throw new ArgumentNullException(nameof(expression));
43-
if (!TryCompileImpl(expression, orderedResolvers, out var filter, out var error))
43+
if (!TryCompileImpl(expression, nameResolver, out var filter, out var error))
4444
throw new ArgumentException(error);
4545

4646
return filter;
@@ -70,25 +70,25 @@ public static bool TryCompile(
7070
/// <param name="expression">An expression.</param>
7171
/// <param name="result">A function that evaluates the expression in the context of a log event.</param>
7272
/// <param name="error">The reported error, if compilation was unsuccessful.</param>
73-
/// <param name="orderedResolvers">An ordered list of <see cref="NameResolver"/>s
74-
/// from which to resolve function names that appear in the template.</param>
73+
/// <param name="nameResolver">A <see cref="NameResolver"/>
74+
/// with which to resolve function names that appear in the template.</param>
7575
/// <returns>True if the function could be created; otherwise, false.</returns>
7676
/// <remarks>Regular expression syntax errors currently generate exceptions instead of producing friendly
7777
/// errors.</remarks>
7878
public static bool TryCompile(
7979
string expression,
80-
IEnumerable<NameResolver> orderedResolvers,
80+
NameResolver nameResolver,
8181
[MaybeNullWhen(false)] out CompiledExpression result,
8282
[MaybeNullWhen(true)] out string error)
8383
{
8484
if (expression == null) throw new ArgumentNullException(nameof(expression));
85-
if (orderedResolvers == null) throw new ArgumentNullException(nameof(orderedResolvers));
86-
return TryCompileImpl(expression, orderedResolvers, out result, out error);
85+
if (nameResolver == null) throw new ArgumentNullException(nameof(nameResolver));
86+
return TryCompileImpl(expression, nameResolver, out result, out error);
8787
}
8888

8989
static bool TryCompileImpl(
9090
string expression,
91-
IEnumerable<NameResolver>? orderedResolvers,
91+
NameResolver? nameResolver,
9292
[MaybeNullWhen(false)] out CompiledExpression result,
9393
[MaybeNullWhen(true)] out string error)
9494
{
@@ -98,7 +98,7 @@ static bool TryCompileImpl(
9898
return false;
9999
}
100100

101-
result = ExpressionCompiler.Compile(root, DefaultFunctionNameResolver.Build(orderedResolvers));
101+
result = ExpressionCompiler.Compile(root, DefaultFunctionNameResolver.Build(nameResolver));
102102
error = null;
103103
return true;
104104
}

src/Serilog.Expressions/Templates/ExpressionTemplate.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,13 @@ public static bool TryParse(
4343
/// embedded values.</param>
4444
/// <param name="result">The parsed template, if successful.</param>
4545
/// <param name="error">A description of the error, if unsuccessful.</param>
46-
/// <param name="orderedResolvers">Optionally, an ordered list of <see cref="NameResolver"/>s
47-
/// from which to resolve function names that appear in the template.</param>
46+
/// <param name="nameResolver">Optionally, a <see cref="NameResolver"/>
47+
/// with which to resolve function names that appear in the template.</param>
4848
/// <returns><c langword="true">true</c> if the template was well-formed.</returns>
4949
public static bool TryParse(
5050
string template,
5151
IFormatProvider? formatProvider,
52-
IEnumerable<NameResolver>? orderedResolvers,
52+
NameResolver? nameResolver,
5353
[MaybeNullWhen(false)] out ExpressionTemplate result,
5454
[MaybeNullWhen(true)] out string error)
5555
{
@@ -61,7 +61,7 @@ public static bool TryParse(
6161
return false;
6262
}
6363

64-
result = new ExpressionTemplate(TemplateCompiler.Compile(parsed, DefaultFunctionNameResolver.Build(orderedResolvers)), formatProvider);
64+
result = new ExpressionTemplate(TemplateCompiler.Compile(parsed, DefaultFunctionNameResolver.Build(nameResolver)), formatProvider);
6565
return true;
6666
}
6767

@@ -77,19 +77,19 @@ public static bool TryParse(
7777
/// <param name="template">The template text.</param>
7878
/// <param name="formatProvider">Optionally, an <see cref="IFormatProvider"/> to use when formatting
7979
/// embedded values.</param>
80-
/// <param name="orderedResolvers">Optionally, an ordered list of <see cref="NameResolver"/>s
81-
/// from which to resolve function names that appear in the template.</param>
80+
/// <param name="nameResolver">Optionally, a <see cref="NameResolver"/>
81+
/// with which to resolve function names that appear in the template.</param>
8282
public ExpressionTemplate(
8383
string template,
8484
IFormatProvider? formatProvider = null,
85-
IEnumerable<NameResolver>? orderedResolvers = null)
85+
NameResolver? nameResolver = null)
8686
{
8787
if (template == null) throw new ArgumentNullException(nameof(template));
8888

8989
if (!TemplateParser.TryParse(template, out var parsed, out var error))
9090
throw new ArgumentException(error);
9191

92-
_compiled = TemplateCompiler.Compile(parsed, DefaultFunctionNameResolver.Build(orderedResolvers));
92+
_compiled = TemplateCompiler.Compile(parsed, DefaultFunctionNameResolver.Build(nameResolver));
9393
_formatProvider = formatProvider;
9494
}
9595

test/Serilog.Expressions.Tests/NameResolverTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public void UserDefinedFunctionsAreCallableInExpressions()
2020
{
2121
var expr = SerilogExpression.Compile(
2222
"magic(10) + 3 = 55",
23-
new[] {new StaticMemberNameResolver(typeof(NameResolverTests))});
23+
new StaticMemberNameResolver(typeof(NameResolverTests)));
2424
Assert.True(Coerce.IsTrue(expr(Some.InformationEvent())));
2525
}
2626
}

0 commit comments

Comments
 (0)