@@ -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