@@ -133,7 +133,7 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s
133
133
writer . WriteEndObject ( ) ;
134
134
}
135
135
136
- private void WriteAllowedChildTags ( JsonWriter writer , AllowedChildTagDescriptor allowedChildTag , JsonSerializer serializer )
136
+ private static void WriteAllowedChildTags ( JsonWriter writer , AllowedChildTagDescriptor allowedChildTag , JsonSerializer serializer )
137
137
{
138
138
writer . WriteStartObject ( ) ;
139
139
@@ -149,7 +149,7 @@ private void WriteAllowedChildTags(JsonWriter writer, AllowedChildTagDescriptor
149
149
writer . WriteEndObject ( ) ;
150
150
}
151
151
152
- private void WriteBoundAttribute ( JsonWriter writer , BoundAttributeDescriptor boundAttribute , JsonSerializer serializer )
152
+ private static void WriteBoundAttribute ( JsonWriter writer , BoundAttributeDescriptor boundAttribute , JsonSerializer serializer )
153
153
{
154
154
writer . WriteStartObject ( ) ;
155
155
@@ -180,6 +180,42 @@ private void WriteBoundAttribute(JsonWriter writer, BoundAttributeDescriptor bou
180
180
writer . WritePropertyName ( nameof ( BoundAttributeDescriptor . Metadata ) ) ;
181
181
WriteMetadata ( writer , boundAttribute . Metadata ) ;
182
182
183
+ writer . WritePropertyName ( nameof ( BoundAttributeDescriptor . BoundAttributeParameters ) ) ;
184
+ writer . WriteStartArray ( ) ;
185
+ foreach ( var boundAttributeParameter in boundAttribute . BoundAttributeParameters )
186
+ {
187
+ WriteBoundAttributeParameter ( writer , boundAttributeParameter , serializer ) ;
188
+ }
189
+ writer . WriteEndArray ( ) ;
190
+
191
+ writer . WriteEndObject ( ) ;
192
+ }
193
+
194
+ private static void WriteBoundAttributeParameter ( JsonWriter writer , BoundAttributeParameterDescriptor boundAttributeParameter , JsonSerializer serializer )
195
+ {
196
+ writer . WriteStartObject ( ) ;
197
+
198
+ writer . WritePropertyName ( nameof ( BoundAttributeParameterDescriptor . Kind ) ) ;
199
+ writer . WriteValue ( boundAttributeParameter . Kind ) ;
200
+
201
+ writer . WritePropertyName ( nameof ( BoundAttributeParameterDescriptor . Name ) ) ;
202
+ writer . WriteValue ( boundAttributeParameter . Name ) ;
203
+
204
+ writer . WritePropertyName ( nameof ( BoundAttributeParameterDescriptor . TypeName ) ) ;
205
+ writer . WriteValue ( boundAttributeParameter . TypeName ) ;
206
+
207
+ writer . WritePropertyName ( nameof ( BoundAttributeParameterDescriptor . IsEnum ) ) ;
208
+ writer . WriteValue ( boundAttributeParameter . IsEnum ) ;
209
+
210
+ writer . WritePropertyName ( nameof ( BoundAttributeParameterDescriptor . Documentation ) ) ;
211
+ writer . WriteValue ( boundAttributeParameter . Documentation ) ;
212
+
213
+ writer . WritePropertyName ( nameof ( BoundAttributeParameterDescriptor . Diagnostics ) ) ;
214
+ serializer . Serialize ( writer , boundAttributeParameter . Diagnostics ) ;
215
+
216
+ writer . WritePropertyName ( nameof ( BoundAttributeParameterDescriptor . Metadata ) ) ;
217
+ WriteMetadata ( writer , boundAttributeParameter . Metadata ) ;
218
+
183
219
writer . WriteEndObject ( ) ;
184
220
}
185
221
@@ -194,7 +230,7 @@ private static void WriteMetadata(JsonWriter writer, IReadOnlyDictionary<string,
194
230
writer . WriteEndObject ( ) ;
195
231
}
196
232
197
- private void WriteTagMatchingRule ( JsonWriter writer , TagMatchingRuleDescriptor ruleDescriptor , JsonSerializer serializer )
233
+ private static void WriteTagMatchingRule ( JsonWriter writer , TagMatchingRuleDescriptor ruleDescriptor , JsonSerializer serializer )
198
234
{
199
235
writer . WriteStartObject ( ) ;
200
236
@@ -221,7 +257,7 @@ private void WriteTagMatchingRule(JsonWriter writer, TagMatchingRuleDescriptor r
221
257
writer . WriteEndObject ( ) ;
222
258
}
223
259
224
- private void WriteRequiredAttribute ( JsonWriter writer , RequiredAttributeDescriptor requiredAttribute , JsonSerializer serializer )
260
+ private static void WriteRequiredAttribute ( JsonWriter writer , RequiredAttributeDescriptor requiredAttribute , JsonSerializer serializer )
225
261
{
226
262
writer . WriteStartObject ( ) ;
227
263
@@ -240,10 +276,13 @@ private void WriteRequiredAttribute(JsonWriter writer, RequiredAttributeDescript
240
276
writer . WritePropertyName ( nameof ( RequiredAttributeDescriptor . Diagnostics ) ) ;
241
277
serializer . Serialize ( writer , requiredAttribute . Diagnostics ) ;
242
278
279
+ writer . WritePropertyName ( nameof ( RequiredAttributeDescriptor . Metadata ) ) ;
280
+ WriteMetadata ( writer , requiredAttribute . Metadata ) ;
281
+
243
282
writer . WriteEndObject ( ) ;
244
283
}
245
284
246
- private void ReadTagMatchingRule ( TagMatchingRuleDescriptorBuilder builder , JObject rule , JsonSerializer serializer )
285
+ private static void ReadTagMatchingRule ( TagMatchingRuleDescriptorBuilder builder , JObject rule , JsonSerializer serializer )
247
286
{
248
287
var tagName = rule [ nameof ( TagMatchingRuleDescriptor . TagName ) ] . Value < string > ( ) ;
249
288
var attributes = rule [ nameof ( TagMatchingRuleDescriptor . Attributes ) ] . Value < JArray > ( ) ;
@@ -269,13 +308,14 @@ private void ReadTagMatchingRule(TagMatchingRuleDescriptorBuilder builder, JObje
269
308
}
270
309
}
271
310
272
- private void ReadRequiredAttribute ( RequiredAttributeDescriptorBuilder builder , JObject attribute , JsonSerializer serializer )
311
+ private static void ReadRequiredAttribute ( RequiredAttributeDescriptorBuilder builder , JObject attribute , JsonSerializer serializer )
273
312
{
274
313
var name = attribute [ nameof ( RequiredAttributeDescriptor . Name ) ] . Value < string > ( ) ;
275
314
var nameComparison = attribute [ nameof ( RequiredAttributeDescriptor . NameComparison ) ] . Value < int > ( ) ;
276
315
var value = attribute [ nameof ( RequiredAttributeDescriptor . Value ) ] . Value < string > ( ) ;
277
316
var valueComparison = attribute [ nameof ( RequiredAttributeDescriptor . ValueComparison ) ] . Value < int > ( ) ;
278
317
var diagnostics = attribute [ nameof ( RequiredAttributeDescriptor . Diagnostics ) ] . Value < JArray > ( ) ;
318
+ var metadata = attribute [ nameof ( RequiredAttributeDescriptor . Metadata ) ] . Value < JObject > ( ) ;
279
319
280
320
builder . Name = name ;
281
321
builder . NameComparisonMode = ( RequiredAttributeDescriptor . NameComparisonMode ) nameComparison ;
@@ -288,9 +328,16 @@ private void ReadRequiredAttribute(RequiredAttributeDescriptorBuilder builder, J
288
328
var diagnosticObject = serializer . Deserialize < RazorDiagnostic > ( diagnosticReader ) ;
289
329
builder . Diagnostics . Add ( diagnosticObject ) ;
290
330
}
331
+
332
+ var metadataReader = metadata . CreateReader ( ) ;
333
+ var metadataValue = serializer . Deserialize < Dictionary < string , string > > ( metadataReader ) ;
334
+ foreach ( var item in metadataValue )
335
+ {
336
+ builder . Metadata [ item . Key ] = item . Value ;
337
+ }
291
338
}
292
339
293
- private void ReadAllowedChildTag ( AllowedChildTagDescriptorBuilder builder , JObject childTag , JsonSerializer serializer )
340
+ private static void ReadAllowedChildTag ( AllowedChildTagDescriptorBuilder builder , JObject childTag , JsonSerializer serializer )
294
341
{
295
342
var name = childTag [ nameof ( AllowedChildTagDescriptor . Name ) ] . Value < string > ( ) ;
296
343
var displayName = childTag [ nameof ( AllowedChildTagDescriptor . DisplayName ) ] . Value < string > ( ) ;
@@ -307,7 +354,7 @@ private void ReadAllowedChildTag(AllowedChildTagDescriptorBuilder builder, JObje
307
354
}
308
355
}
309
356
310
- private void ReadBoundAttribute ( BoundAttributeDescriptorBuilder builder , JObject attribute , JsonSerializer serializer )
357
+ private static void ReadBoundAttribute ( BoundAttributeDescriptorBuilder builder , JObject attribute , JsonSerializer serializer )
311
358
{
312
359
var descriptorKind = attribute [ nameof ( BoundAttributeDescriptor . Kind ) ] . Value < string > ( ) ;
313
360
var name = attribute [ nameof ( BoundAttributeDescriptor . Name ) ] . Value < string > ( ) ;
@@ -318,6 +365,7 @@ private void ReadBoundAttribute(BoundAttributeDescriptorBuilder builder, JObject
318
365
var documentation = attribute [ nameof ( BoundAttributeDescriptor . Documentation ) ] . Value < string > ( ) ;
319
366
var diagnostics = attribute [ nameof ( BoundAttributeDescriptor . Diagnostics ) ] . Value < JArray > ( ) ;
320
367
var metadata = attribute [ nameof ( BoundAttributeDescriptor . Metadata ) ] . Value < JObject > ( ) ;
368
+ var boundAttributeParameters = attribute [ nameof ( BoundAttributeDescriptor . BoundAttributeParameters ) ] . Value < JArray > ( ) ;
321
369
322
370
builder . Name = name ;
323
371
builder . TypeName = typeName ;
@@ -346,6 +394,46 @@ private void ReadBoundAttribute(BoundAttributeDescriptorBuilder builder, JObject
346
394
{
347
395
builder . Metadata [ item . Key ] = item . Value ;
348
396
}
397
+
398
+ foreach ( var boundAttributeParameter in boundAttributeParameters )
399
+ {
400
+ var parameter = boundAttributeParameter . Value < JObject > ( ) ;
401
+ builder . BindAttributeParameter ( b => ReadBoundAttributeParameter ( b , parameter , serializer ) ) ;
402
+ }
403
+ }
404
+
405
+ private static void ReadBoundAttributeParameter ( BoundAttributeParameterDescriptorBuilder builder , JObject parameter , JsonSerializer serializer )
406
+ {
407
+ var descriptorKind = parameter [ nameof ( BoundAttributeParameterDescriptor . Kind ) ] . Value < string > ( ) ;
408
+ var name = parameter [ nameof ( BoundAttributeParameterDescriptor . Name ) ] . Value < string > ( ) ;
409
+ var typeName = parameter [ nameof ( BoundAttributeParameterDescriptor . TypeName ) ] . Value < string > ( ) ;
410
+ var isEnum = parameter [ nameof ( BoundAttributeParameterDescriptor . IsEnum ) ] . Value < bool > ( ) ;
411
+ var documentation = parameter [ nameof ( BoundAttributeParameterDescriptor . Documentation ) ] . Value < string > ( ) ;
412
+ var diagnostics = parameter [ nameof ( BoundAttributeParameterDescriptor . Diagnostics ) ] . Value < JArray > ( ) ;
413
+ var metadata = parameter [ nameof ( BoundAttributeParameterDescriptor . Metadata ) ] . Value < JObject > ( ) ;
414
+
415
+ builder . Name = name ;
416
+ builder . TypeName = typeName ;
417
+ builder . Documentation = documentation ;
418
+
419
+ if ( isEnum )
420
+ {
421
+ builder . IsEnum = true ;
422
+ }
423
+
424
+ foreach ( var diagnostic in diagnostics )
425
+ {
426
+ var diagnosticReader = diagnostic . CreateReader ( ) ;
427
+ var diagnosticObject = serializer . Deserialize < RazorDiagnostic > ( diagnosticReader ) ;
428
+ builder . Diagnostics . Add ( diagnosticObject ) ;
429
+ }
430
+
431
+ var metadataReader = metadata . CreateReader ( ) ;
432
+ var metadataValue = serializer . Deserialize < Dictionary < string , string > > ( metadataReader ) ;
433
+ foreach ( var item in metadataValue )
434
+ {
435
+ builder . Metadata [ item . Key ] = item . Value ;
436
+ }
349
437
}
350
438
}
351
439
}
0 commit comments