1+ using System ;
2+ using Newtonsoft . Json ;
3+ using Newtonsoft . Json . Linq ;
4+ using Contentstack . Management . Core . Models ;
5+ using Microsoft . Extensions . Options ;
6+
7+ namespace Contentstack . Management . Core . Utils
8+ {
9+ public class TextNodeJsonConverter : JsonConverter < TextNode >
10+ {
11+ public override TextNode ReadJson ( JsonReader reader , Type objectType , TextNode existingValue , bool hasExistingValue , JsonSerializer serializer )
12+ {
13+ throw new NotImplementedException ( ) ;
14+ }
15+
16+ public override void WriteJson ( JsonWriter writer , TextNode value , JsonSerializer serializer )
17+ {
18+ writer . WriteStartObject ( ) ;
19+
20+ if ( value . attrs != null )
21+ {
22+ writer . WritePropertyName ( "attrs" ) ;
23+ serializer . Serialize ( writer , value . attrs ) ;
24+ }
25+
26+ if ( value . children != null )
27+ {
28+ writer . WritePropertyName ( "children" ) ;
29+ writer . WriteStartArray ( ) ;
30+ foreach ( var child in value . children )
31+ {
32+ serializer . Serialize ( writer , child ) ;
33+ }
34+ writer . WriteEndArray ( ) ;
35+ }
36+ // Write additional properties specific to TextNode
37+ if ( value . bold )
38+ {
39+ writer . WritePropertyName ( "bold" ) ;
40+ writer . WriteValue ( value . bold ) ;
41+ }
42+ if ( value . italic )
43+ {
44+ writer . WritePropertyName ( "italic" ) ;
45+ writer . WriteValue ( value . italic ) ;
46+ }
47+ if ( value . underline )
48+ {
49+ writer . WritePropertyName ( "underline" ) ;
50+ writer . WriteValue ( value . underline ) ;
51+ }
52+ if ( value . strikethrough )
53+ {
54+ writer . WritePropertyName ( "strikethrough" ) ;
55+ writer . WriteValue ( value . strikethrough ) ;
56+ }
57+ if ( value . inlineCode )
58+ {
59+ writer . WritePropertyName ( "inlineCode" ) ;
60+ writer . WriteValue ( value . inlineCode ) ;
61+ }
62+ if ( value . subscript )
63+ {
64+ writer . WritePropertyName ( "subscript" ) ;
65+ writer . WriteValue ( value . subscript ) ;
66+ }
67+ if ( value . superscript )
68+ {
69+ writer . WritePropertyName ( "superscript" ) ;
70+ writer . WriteValue ( value . superscript ) ;
71+ }
72+ if ( ! string . IsNullOrEmpty ( value . text ) )
73+ {
74+ writer . WritePropertyName ( "text" ) ;
75+ writer . WriteValue ( value . text ) ;
76+ }
77+
78+ writer . WriteEndObject ( ) ;
79+ }
80+ }
81+ }
0 commit comments