fix: '{0}{1}' is now parsed correctly

This commit is contained in:
Mira 2022-11-29 09:04:46 +01:00
parent c21f2dae76
commit 1e4bcb07b0
Signed by untrusted user who does not match committer: Xorog
GPG key ID: 983798ED9C3E7C36

View file

@ -104,7 +104,7 @@ public class Logger : ILogger
LogLevel.TRACE => ConsoleColor.Gray, LogLevel.TRACE => ConsoleColor.Gray,
LogLevel.DEBUG2 => ConsoleColor.Gray, LogLevel.DEBUG2 => ConsoleColor.Gray,
LogLevel.DEBUG => ConsoleColor.Gray, LogLevel.DEBUG => ConsoleColor.Gray,
LogLevel.INFO => ConsoleColor.Green, LogLevel.INFO => ConsoleColor.Cyan,
LogLevel.WARN => ConsoleColor.Yellow, LogLevel.WARN => ConsoleColor.Yellow,
LogLevel.ERROR => ConsoleColor.Red, LogLevel.ERROR => ConsoleColor.Red,
LogLevel.FATAL => ConsoleColor.Black, LogLevel.FATAL => ConsoleColor.Black,
@ -124,11 +124,15 @@ public class Logger : ILogger
int currentArg = 0; int currentArg = 0;
bool inTemplate = false; bool inTemplate = false;
bool attemptedParsing = false;
List<StringPart> builder = new(); List<StringPart> builder = new();
while (leftOver.Length > 0) while (leftOver.Length > 0)
{ {
if (inTemplate && currentLog.Args?.Length >= currentArg) if (inTemplate)
{
attemptedParsing = true;
if (currentLog.Args?.Length >= currentArg)
{ {
int endIndex = leftOver.IndexOf('}'); int endIndex = leftOver.IndexOf('}');
@ -149,21 +153,27 @@ public class Logger : ILogger
inTemplate = false; inTemplate = false;
leftOver = leftOver[(endIndex + 1)..]; leftOver = leftOver[(endIndex + 1)..];
attemptedParsing = false;
continue; continue;
} }
}
inTemplate = false; inTemplate = false;
int placeholderIndex = leftOver.IndexOf('{'); int placeholderIndex = leftOver.IndexOf('{');
if (placeholderIndex != -1 && currentLog.Args?.Length >= currentArg) if (placeholderIndex != -1)
inTemplate = true; inTemplate = true;
if (placeholderIndex is -1 or 0 || placeholderIndex > leftOver.Length) if (placeholderIndex == -1 || placeholderIndex > leftOver.Length)
placeholderIndex = leftOver.Length;
if (placeholderIndex == 0 && attemptedParsing)
placeholderIndex = leftOver.Length; placeholderIndex = leftOver.Length;
builder.Add(new StringPart { String = leftOver[..placeholderIndex] }); builder.Add(new StringPart { String = leftOver[..placeholderIndex] });
leftOver = leftOver[placeholderIndex..]; leftOver = leftOver[placeholderIndex..];
attemptedParsing = false;
} }
if (handler.maxLogLevel >= currentLog.LogLevel) if (handler.maxLogLevel >= currentLog.LogLevel)