@@ -117,8 +117,37 @@ public override void Emit(ScalarEventInfo eventInfo, IEmitter emitter) {
117117
118118 base . Emit ( eventInfo , emitter ) ;
119119 }
120- // objectGraphVisitor, w => w.OnTop()
121- public static SerializerBuilder Add ( SerializerBuilder builder , bool omitNullValues = false ) {
120+ }
121+
122+ public class FlowStyleAllEmitter : ChainedEventEmitter {
123+ public FlowStyleAllEmitter ( IEventEmitter next ) : base ( next ) { }
124+
125+ public override void Emit ( MappingStartEventInfo eventInfo , IEmitter emitter ) {
126+ eventInfo . Style = MappingStyle . Flow ;
127+ base . Emit ( eventInfo , emitter ) ;
128+ }
129+
130+ public override void Emit ( SequenceStartEventInfo eventInfo , IEmitter emitter ) {
131+ eventInfo . Style = SequenceStyle . Flow ;
132+ nextEmitter . Emit ( eventInfo , emitter ) ;
133+ }
134+ }
135+
136+ public class FlowStyleSequenceEmitter : ChainedEventEmitter {
137+ public FlowStyleSequenceEmitter ( IEventEmitter next ) : base ( next ) { }
138+
139+ public override void Emit ( SequenceStartEventInfo eventInfo , IEmitter emitter ) {
140+ eventInfo . Style = SequenceStyle . Flow ;
141+ nextEmitter . Emit ( eventInfo , emitter ) ;
142+ }
143+ }
144+
145+ class BuilderUtils {
146+ public static SerializerBuilder BuildSerializer (
147+ SerializerBuilder builder ,
148+ bool omitNullValues = false ,
149+ bool useFlowStyle = false ,
150+ bool useSequenceFlowStyle = false ) {
122151 builder = builder
123152 . WithEventEmitter ( next => new StringQuotingEmitter ( next ) )
124153 . WithTypeConverter ( new BigIntegerTypeConverter ( ) )
@@ -127,6 +156,13 @@ public static SerializerBuilder Add(SerializerBuilder builder, bool omitNullValu
127156 builder = builder
128157 . WithEmissionPhaseObjectGraphVisitor ( args => new NullValueGraphVisitor ( args . InnerVisitor ) ) ;
129158 }
159+ if ( useFlowStyle == true ) {
160+ builder = builder . WithEventEmitter ( next => new FlowStyleAllEmitter ( next ) ) ;
161+ }
162+ if ( useSequenceFlowStyle == true ) {
163+ builder = builder . WithEventEmitter ( next => new FlowStyleSequenceEmitter ( next ) ) ;
164+ }
165+
130166 return builder ;
131167 }
132168}
0 commit comments