Skip to content

Commit b192fb0

Browse files
committed
Refactor value formatters to use options object
Updated DisplayValueFormatter, JsonValueFormatter, and ValueFormatter to accept a RichTextBoxSinkOptions object instead of individual parameters. Updated all usages and internal references to use the options object, improving maintainability and consistency.
1 parent 0317d75 commit b192fb0

File tree

5 files changed

+94
-113
lines changed

5 files changed

+94
-113
lines changed

Serilog.Sinks.RichTextBox.WinForms.Colored/Sinks/RichTextBoxForms/Formatting/DisplayValueFormatter.cs

Lines changed: 26 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,12 @@ namespace Serilog.Sinks.RichTextBoxForms.Formatting
2828
{
2929
public class DisplayValueFormatter : ValueFormatter
3030
{
31-
private readonly IFormatProvider? _formatProvider;
32-
private readonly bool _prettyPrintJson;
33-
private readonly int _spacesPerIndent;
3431
private readonly StringBuilder _scalarBuilder = new();
3532
private readonly StringBuilder _literalBuilder = new(64);
3633
private JsonValueFormatter? _jsonValueFormatter;
3734

38-
public DisplayValueFormatter(Theme theme, IFormatProvider? formatProvider, bool prettyPrintJson = false, int spacesPerIndent = 2) : base(theme, formatProvider)
35+
public DisplayValueFormatter(RichTextBoxSinkOptions options) : base(options)
3936
{
40-
_formatProvider = formatProvider;
41-
_prettyPrintJson = prettyPrintJson;
42-
_spacesPerIndent = spacesPerIndent;
4337
}
4438

4539
private void FormatLiteralValue(ScalarValue scalar, IRtfCanvas canvas, string? format, bool isLiteral)
@@ -49,7 +43,7 @@ private void FormatLiteralValue(ScalarValue scalar, IRtfCanvas canvas, string? f
4943
switch (value)
5044
{
5145
case null:
52-
Theme.Render(canvas, StyleToken.Null, "null");
46+
Options.Theme.Render(canvas, StyleToken.Null, "null");
5347
return;
5448

5549
case string text:
@@ -59,15 +53,15 @@ private void FormatLiteralValue(ScalarValue scalar, IRtfCanvas canvas, string? f
5953
case byte[] bytes:
6054
_literalBuilder.Clear();
6155
_literalBuilder.Append('"').Append(Convert.ToBase64String(bytes)).Append('"');
62-
Theme.Render(canvas, StyleToken.String, _literalBuilder.ToString());
56+
Options.Theme.Render(canvas, StyleToken.String, _literalBuilder.ToString());
6357
return;
6458

6559
case bool b:
66-
Theme.Render(canvas, StyleToken.Boolean, b.ToString());
60+
Options.Theme.Render(canvas, StyleToken.Boolean, b.ToString());
6761
return;
6862

6963
case Uri uri:
70-
Theme.Render(canvas, StyleToken.Scalar, uri.ToString());
64+
Options.Theme.Render(canvas, StyleToken.Scalar, uri.ToString());
7165
return;
7266

7367
case IFormattable formattable:
@@ -79,54 +73,54 @@ private void FormatLiteralValue(ScalarValue scalar, IRtfCanvas canvas, string? f
7973

8074
using (var writer = new StringWriter(_scalarBuilder))
8175
{
82-
scalar.Render(writer, null, _formatProvider);
76+
scalar.Render(writer, null, Options.FormatProvider);
8377
}
8478

85-
Theme.Render(canvas, StyleToken.Scalar, _scalarBuilder.ToString());
79+
Options.Theme.Render(canvas, StyleToken.Scalar, _scalarBuilder.ToString());
8680
}
8781

8882
private void RenderString(string text, IRtfCanvas canvas, string? format, bool isLiteral)
8983
{
9084
var effectivelyLiteral = isLiteral || format != null && format.Contains("l");
9185
if (effectivelyLiteral)
9286
{
93-
Theme.Render(canvas, StyleToken.String, text);
87+
Options.Theme.Render(canvas, StyleToken.String, text);
9488
}
9589
else
9690
{
9791
_literalBuilder.Clear();
9892
_literalBuilder.Append('"').Append(text.Replace("\"", "\\\"")).Append('"');
99-
Theme.Render(canvas, StyleToken.String, _literalBuilder.ToString());
93+
Options.Theme.Render(canvas, StyleToken.String, _literalBuilder.ToString());
10094
}
10195
}
10296

10397
protected override bool VisitDictionaryValue(ValueFormatterState state, DictionaryValue dictionary)
10498
{
10599
if (state.Format.Contains("j"))
106100
{
107-
_jsonValueFormatter ??= new JsonValueFormatter(Theme, _formatProvider, _prettyPrintJson, _spacesPerIndent);
101+
_jsonValueFormatter ??= new JsonValueFormatter(Options);
108102
_jsonValueFormatter.Format(dictionary, state.Canvas, state.Format, state.IsLiteral);
109103
return true;
110104
}
111105

112-
Theme.Render(state.Canvas, StyleToken.TertiaryText, "{");
106+
Options.Theme.Render(state.Canvas, StyleToken.TertiaryText, "{");
113107

114108
var delimiter = string.Empty;
115109
foreach (var (scalarValue, propertyValue) in dictionary.Elements)
116110
{
117111
if (!string.IsNullOrEmpty(delimiter))
118112
{
119-
Theme.Render(state.Canvas, StyleToken.TertiaryText, delimiter);
113+
Options.Theme.Render(state.Canvas, StyleToken.TertiaryText, delimiter);
120114
}
121115

122116
delimiter = ", ";
123-
Theme.Render(state.Canvas, StyleToken.TertiaryText, "[");
117+
Options.Theme.Render(state.Canvas, StyleToken.TertiaryText, "[");
124118
Visit(state.Next(), scalarValue);
125-
Theme.Render(state.Canvas, StyleToken.TertiaryText, "]=");
119+
Options.Theme.Render(state.Canvas, StyleToken.TertiaryText, "]=");
126120
Visit(state.Next(), propertyValue);
127121
}
128122

129-
Theme.Render(state.Canvas, StyleToken.TertiaryText, "}");
123+
Options.Theme.Render(state.Canvas, StyleToken.TertiaryText, "}");
130124
return true;
131125
}
132126

@@ -140,60 +134,60 @@ protected override bool VisitSequenceValue(ValueFormatterState state, SequenceVa
140134
{
141135
if (state.Format.Contains("j"))
142136
{
143-
_jsonValueFormatter ??= new JsonValueFormatter(Theme, _formatProvider, _prettyPrintJson, _spacesPerIndent);
137+
_jsonValueFormatter ??= new JsonValueFormatter(Options);
144138
_jsonValueFormatter.Format(sequence, state.Canvas, state.Format, state.IsLiteral);
145139
return true;
146140
}
147141

148-
Theme.Render(state.Canvas, StyleToken.TertiaryText, "[");
142+
Options.Theme.Render(state.Canvas, StyleToken.TertiaryText, "[");
149143

150144
var delimiter = string.Empty;
151145
foreach (var propertyValue in sequence.Elements)
152146
{
153147
if (!string.IsNullOrEmpty(delimiter))
154148
{
155-
Theme.Render(state.Canvas, StyleToken.TertiaryText, delimiter);
149+
Options.Theme.Render(state.Canvas, StyleToken.TertiaryText, delimiter);
156150
}
157151

158152
delimiter = ", ";
159153
Visit(state.Next(), propertyValue);
160154
}
161155

162-
Theme.Render(state.Canvas, StyleToken.TertiaryText, "]");
156+
Options.Theme.Render(state.Canvas, StyleToken.TertiaryText, "]");
163157
return true;
164158
}
165159

166160
protected override bool VisitStructureValue(ValueFormatterState state, StructureValue structure)
167161
{
168162
if (state.Format.Contains("j"))
169163
{
170-
_jsonValueFormatter ??= new JsonValueFormatter(Theme, _formatProvider, _prettyPrintJson, _spacesPerIndent);
164+
_jsonValueFormatter ??= new JsonValueFormatter(Options);
171165
_jsonValueFormatter.Format(structure, state.Canvas, state.Format, state.IsLiteral);
172166
return true;
173167
}
174168

175169
if (structure.TypeTag != null)
176170
{
177-
Theme.Render(state.Canvas, StyleToken.Name, structure.TypeTag + " ");
171+
Options.Theme.Render(state.Canvas, StyleToken.Name, structure.TypeTag + " ");
178172
}
179173

180-
Theme.Render(state.Canvas, StyleToken.TertiaryText, "{");
174+
Options.Theme.Render(state.Canvas, StyleToken.TertiaryText, "{");
181175

182176
var delimiter = string.Empty;
183177
foreach (var eventProperty in structure.Properties)
184178
{
185179
if (!string.IsNullOrEmpty(delimiter))
186180
{
187-
Theme.Render(state.Canvas, StyleToken.TertiaryText, delimiter);
181+
Options.Theme.Render(state.Canvas, StyleToken.TertiaryText, delimiter);
188182
}
189183

190184
delimiter = ", ";
191-
Theme.Render(state.Canvas, StyleToken.Name, eventProperty.Name);
192-
Theme.Render(state.Canvas, StyleToken.TertiaryText, "=");
185+
Options.Theme.Render(state.Canvas, StyleToken.Name, eventProperty.Name);
186+
Options.Theme.Render(state.Canvas, StyleToken.TertiaryText, "=");
193187
Visit(state.Next(), eventProperty.Value);
194188
}
195189

196-
Theme.Render(state.Canvas, StyleToken.TertiaryText, "}");
190+
Options.Theme.Render(state.Canvas, StyleToken.TertiaryText, "}");
197191
return true;
198192
}
199193
}

0 commit comments

Comments
 (0)