Skip to content

Commit 2b3de4d

Browse files
committed
Allow literal newlines etc. in string content
1 parent 48bb1cf commit 2b3de4d

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

src/Serilog.Expressions/Expressions/Parsing/ExpressionTextParsers.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,24 @@ static class ExpressionTextParsers
1010
static readonly TextParser<ExpressionToken> GreaterOrEqual = Span.EqualTo(">=").Value(ExpressionToken.GreaterThanOrEqual);
1111
static readonly TextParser<ExpressionToken> NotEqual = Span.EqualTo("<>").Value(ExpressionToken.NotEqual);
1212

13-
public static TextParser<ExpressionToken> CompoundOperator = GreaterOrEqual.Or(LessOrEqual.Try().Or(NotEqual));
13+
public static readonly TextParser<ExpressionToken> CompoundOperator = GreaterOrEqual.Or(LessOrEqual.Try().Or(NotEqual));
1414

15-
public static TextParser<string> HexInteger =
15+
public static readonly TextParser<string> HexInteger =
1616
Span.EqualTo("0x")
1717
.IgnoreThen(Character.Digit.Or(Character.Matching(ch => ch >= 'a' && ch <= 'f' || ch >= 'A' && ch <= 'F', "a-f"))
1818
.Named("hex digit")
1919
.AtLeastOnce())
2020
.Select(chars => new string(chars));
2121

22-
public static TextParser<char> StringContentChar =
23-
Span.EqualTo("''").Value('\'').Try().Or(Character.ExceptIn('\'', '\r', '\n'));
22+
static readonly TextParser<char> StringContentChar =
23+
Span.EqualTo("''").Value('\'').Try().Or(Character.AnyChar);
2424

25-
public static TextParser<string> String =
25+
public static readonly TextParser<string> String =
2626
Character.EqualTo('\'')
2727
.IgnoreThen(StringContentChar.Many())
2828
.Then(s => Character.EqualTo('\'').Value(new string(s)));
2929

30-
public static TextParser<TextSpan> Real =
30+
public static readonly TextParser<TextSpan> Real =
3131
Numerics.Integer
3232
.Then(n => Character.EqualTo('.').IgnoreThen(Numerics.Integer).OptionalOrDefault()
3333
.Select(f => f == TextSpan.None ? n : new TextSpan(n.Source, n.Position, n.Length + f.Length + 1)));

test/Serilog.Expressions.Tests/ExpressionParserTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class ExpressionParserTests
3939
[InlineData("@Level in ['Error', 'Warning']", "_Internal_In(@Level,[@\"Error\",@\"Warning\"])")]
4040
[InlineData("5 not in [1, 2]", "_Internal_NotIn(5,[1,2])")]
4141
[InlineData("1+1", "Add(1,1)")]
42+
[InlineData("'te\nst'", null)]
4243
public void ValidSyntaxIsAccepted(string input, string expected = null)
4344
{
4445
var roundTrip = ExpressionParser.Parse(input).ToString();

0 commit comments

Comments
 (0)