Skip to content

Commit 10d6c32

Browse files
(#140) Refactor
1 parent 803422f commit 10d6c32

File tree

2 files changed

+77
-37
lines changed

2 files changed

+77
-37
lines changed

src/Stravaig.Extensions.Logging.Diagnostics.Verify/LogEntryConverter.cs

Lines changed: 76 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,55 +16,100 @@ public LogEntryConverter(Settings settings)
1616
{
1717
_settings = settings;
1818
}
19-
19+
20+
private class Context
21+
{
22+
internal Settings Settings { get; }
23+
internal VerifyJsonWriter Writer { get; }
24+
private int _sequence;
25+
internal int CadenceOffset { get; set; }
26+
27+
internal bool IsWritingSequence => Using(Settings.Sequence);
28+
internal bool IsWritingLogLevel => Using(Settings.LogLevel);
29+
internal bool IsWritingCategoryName => Using(Settings.CategoryName);
30+
internal bool IsWritingFormattedMessage => Using(Settings.FormattedMessage);
31+
32+
internal int CurrentSequence(LogEntry logEntry) =>
33+
Using(Settings.KeepSequenceCadence)
34+
? logEntry.Sequence - CadenceOffset
35+
: _sequence;
36+
37+
public Context(VerifyJsonWriter writer, Settings settings)
38+
{
39+
_sequence = 0;
40+
Settings = settings;
41+
Writer = writer;
42+
}
43+
44+
internal void MoveToNextLogEntry()
45+
{
46+
_sequence++;
47+
}
48+
49+
private bool Using(Settings setting) => (Settings & setting) != 0;
50+
51+
}
2052

2153
public override void Write(VerifyJsonWriter writer, IEnumerable<LogEntry> logEntries)
2254
{
23-
int sequence = 0;
24-
int cadenceOffset = 0;
55+
var ctx = new Context(writer, _settings);
2556
bool isFirst = true;
2657
writer.WriteStartArray();
2758
foreach (var logEntry in logEntries)
2859
{
2960
if (isFirst)
3061
{
31-
cadenceOffset = logEntry.Sequence;
62+
ctx.CadenceOffset = logEntry.Sequence;
3263
isFirst = false;
3364
}
3465

3566
writer.WriteStartObject();
3667

37-
if (_settings.WriteSequence())
38-
{
39-
writer.WritePropertyName(nameof(logEntry.Sequence));
40-
if (_settings.Use(Settings.KeepSequenceCadence))
41-
writer.WriteValue(logEntry.Sequence - cadenceOffset);
42-
else
43-
writer.WriteValue(sequence);
44-
}
45-
46-
if (_settings.WriteLogLevel())
47-
{
48-
writer.WritePropertyName(nameof(logEntry.LogLevel));
49-
writer.WriteValue(logEntry.LogLevel.ToString());
50-
}
51-
52-
if (_settings.WriteCategoryName())
53-
{
54-
writer.WritePropertyName(nameof(logEntry.CategoryName));
55-
writer.WriteValue(logEntry.CategoryName);
56-
}
57-
58-
if (_settings.WriteFormattedMessage())
59-
{
60-
writer.WritePropertyName(nameof(logEntry.FormattedMessage));
61-
writer.WriteValue(logEntry.FormattedMessage);
62-
}
68+
WriteSequence(ctx, logEntry);
69+
WriteLogLevel(ctx, logEntry);
70+
WriteCategoryName(ctx, logEntry);
71+
WriteFormattedMessage(ctx, logEntry);
6372

6473
writer.WriteEndObject();
65-
sequence++;
74+
ctx.MoveToNextLogEntry();
6675
}
6776

6877
writer.WriteEndArray();
6978
}
79+
80+
private static void WriteFormattedMessage(Context ctx, LogEntry logEntry)
81+
{
82+
if (ctx.IsWritingFormattedMessage)
83+
{
84+
ctx.Writer.WritePropertyName(nameof(logEntry.FormattedMessage));
85+
ctx.Writer.WriteValue(logEntry.FormattedMessage);
86+
}
87+
}
88+
89+
private static void WriteCategoryName(Context ctx, LogEntry logEntry)
90+
{
91+
if (ctx.IsWritingCategoryName)
92+
{
93+
ctx.Writer.WritePropertyName(nameof(logEntry.CategoryName));
94+
ctx.Writer.WriteValue(logEntry.CategoryName);
95+
}
96+
}
97+
98+
private static void WriteLogLevel(Context ctx, LogEntry logEntry)
99+
{
100+
if (ctx.IsWritingLogLevel)
101+
{
102+
ctx.Writer.WritePropertyName(nameof(logEntry.LogLevel));
103+
ctx.Writer.WriteValue(logEntry.LogLevel.ToString());
104+
}
105+
}
106+
107+
private static void WriteSequence(Context ctx, LogEntry logEntry)
108+
{
109+
if (ctx.IsWritingSequence)
110+
{
111+
ctx.Writer.WritePropertyName(nameof(logEntry.Sequence));
112+
ctx.Writer.WriteValue(ctx.CurrentSequence(logEntry));
113+
}
114+
}
70115
}

src/Stravaig.Extensions.Logging.Diagnostics.Verify/Settings.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,5 @@ public enum Settings
4949

5050
internal static class SettingsExtensions
5151
{
52-
internal static bool Use(this Settings settings, Settings setting) => (settings & setting) != 0;
53-
54-
internal static bool WriteSequence(this Settings settings) => settings.Use(Settings.Sequence);
55-
internal static bool WriteLogLevel(this Settings settings) => settings.Use(Settings.LogLevel);
56-
internal static bool WriteCategoryName(this Settings settings) => settings.Use(Settings.CategoryName);
57-
internal static bool WriteFormattedMessage(this Settings settings) => settings.Use(Settings.FormattedMessage);
52+
5853
}

0 commit comments

Comments
 (0)