@@ -226,7 +226,7 @@ func yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_
226226}
227227
228228// Increase the indentation level.
229- func yaml_emitter_increase_indent (emitter * yaml_emitter_t , flow , indentless bool ) bool {
229+ func yaml_emitter_increase_indent (emitter * yaml_emitter_t , flow , indentless bool , compact_seq bool ) bool {
230230 emitter .indents = append (emitter .indents , emitter .indent )
231231 if emitter .indent < 0 {
232232 if flow {
@@ -241,7 +241,10 @@ func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool
241241 emitter .indent += 2
242242 } else {
243243 // Everything else aligns to the chosen indentation.
244- emitter .indent = emitter .best_indent * ((emitter .indent + emitter .best_indent )/ emitter .best_indent )
244+ emitter .indent = emitter .best_indent * ((emitter .indent + emitter .best_indent ) / emitter .best_indent )
245+ }
246+ if compact_seq {
247+ emitter .indent = emitter .indent - 2
245248 }
246249 }
247250 return true
@@ -488,7 +491,7 @@ func yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_eve
488491 if ! yaml_emitter_emit_node (emitter , event , true , false , false , false ) {
489492 return false
490493 }
491- if ! yaml_emitter_process_line_comment (emitter ) {
494+ if ! yaml_emitter_process_line_comment (emitter , false ) {
492495 return false
493496 }
494497 if ! yaml_emitter_process_foot_comment (emitter ) {
@@ -534,7 +537,7 @@ func yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_e
534537 if ! yaml_emitter_write_indicator (emitter , []byte {'[' }, true , true , false ) {
535538 return false
536539 }
537- if ! yaml_emitter_increase_indent (emitter , true , false ) {
540+ if ! yaml_emitter_increase_indent (emitter , true , false , false ) {
538541 return false
539542 }
540543 emitter .flow_level ++
@@ -557,7 +560,7 @@ func yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_e
557560 if ! yaml_emitter_write_indicator (emitter , []byte {']' }, false , false , false ) {
558561 return false
559562 }
560- if ! yaml_emitter_process_line_comment (emitter ) {
563+ if ! yaml_emitter_process_line_comment (emitter , false ) {
561564 return false
562565 }
563566 if ! yaml_emitter_process_foot_comment (emitter ) {
@@ -602,7 +605,7 @@ func yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_e
602605 return false
603606 }
604607 }
605- if ! yaml_emitter_process_line_comment (emitter ) {
608+ if ! yaml_emitter_process_line_comment (emitter , false ) {
606609 return false
607610 }
608611 if ! yaml_emitter_process_foot_comment (emitter ) {
@@ -617,7 +620,7 @@ func yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_eve
617620 if ! yaml_emitter_write_indicator (emitter , []byte {'{' }, true , true , false ) {
618621 return false
619622 }
620- if ! yaml_emitter_increase_indent (emitter , true , false ) {
623+ if ! yaml_emitter_increase_indent (emitter , true , false , false ) {
621624 return false
622625 }
623626 emitter .flow_level ++
@@ -643,7 +646,7 @@ func yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_eve
643646 if ! yaml_emitter_write_indicator (emitter , []byte {'}' }, false , false , false ) {
644647 return false
645648 }
646- if ! yaml_emitter_process_line_comment (emitter ) {
649+ if ! yaml_emitter_process_line_comment (emitter , false ) {
647650 return false
648651 }
649652 if ! yaml_emitter_process_foot_comment (emitter ) {
@@ -716,7 +719,7 @@ func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_e
716719 return false
717720 }
718721 }
719- if ! yaml_emitter_process_line_comment (emitter ) {
722+ if ! yaml_emitter_process_line_comment (emitter , false ) {
720723 return false
721724 }
722725 if ! yaml_emitter_process_foot_comment (emitter ) {
@@ -728,7 +731,9 @@ func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_e
728731// Expect a block item node.
729732func yaml_emitter_emit_block_sequence_item (emitter * yaml_emitter_t , event * yaml_event_t , first bool ) bool {
730733 if first {
731- if ! yaml_emitter_increase_indent (emitter , false , false ) {
734+ seq := emitter .mapping_context && (emitter .column == 0 || ! emitter .indention ) &&
735+ emitter .compact_sequence_indent
736+ if ! yaml_emitter_increase_indent (emitter , false , false , seq ) {
732737 return false
733738 }
734739 }
@@ -752,7 +757,7 @@ func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_
752757 if ! yaml_emitter_emit_node (emitter , event , false , true , false , false ) {
753758 return false
754759 }
755- if ! yaml_emitter_process_line_comment (emitter ) {
760+ if ! yaml_emitter_process_line_comment (emitter , false ) {
756761 return false
757762 }
758763 if ! yaml_emitter_process_foot_comment (emitter ) {
@@ -764,7 +769,7 @@ func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_
764769// Expect a block key node.
765770func yaml_emitter_emit_block_mapping_key (emitter * yaml_emitter_t , event * yaml_event_t , first bool ) bool {
766771 if first {
767- if ! yaml_emitter_increase_indent (emitter , false , false ) {
772+ if ! yaml_emitter_increase_indent (emitter , false , false , false ) {
768773 return false
769774 }
770775 }
@@ -828,7 +833,7 @@ func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_
828833 } else if event .sequence_style () != yaml_FLOW_SEQUENCE_STYLE && (event .typ == yaml_MAPPING_START_EVENT || event .typ == yaml_SEQUENCE_START_EVENT ) {
829834 // An indented block follows, so write the comment right now.
830835 emitter .line_comment , emitter .key_line_comment = emitter .key_line_comment , emitter .line_comment
831- if ! yaml_emitter_process_line_comment (emitter ) {
836+ if ! yaml_emitter_process_line_comment (emitter , false ) {
832837 return false
833838 }
834839 emitter .line_comment , emitter .key_line_comment = emitter .key_line_comment , emitter .line_comment
@@ -838,7 +843,7 @@ func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_
838843 if ! yaml_emitter_emit_node (emitter , event , false , false , true , false ) {
839844 return false
840845 }
841- if ! yaml_emitter_process_line_comment (emitter ) {
846+ if ! yaml_emitter_process_line_comment (emitter , false ) {
842847 return false
843848 }
844849 if ! yaml_emitter_process_foot_comment (emitter ) {
@@ -896,7 +901,7 @@ func yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool
896901 if ! yaml_emitter_process_tag (emitter ) {
897902 return false
898903 }
899- if ! yaml_emitter_increase_indent (emitter , true , false ) {
904+ if ! yaml_emitter_increase_indent (emitter , true , false , false ) {
900905 return false
901906 }
902907 if ! yaml_emitter_process_scalar (emitter ) {
@@ -1144,8 +1149,11 @@ func yaml_emitter_process_head_comment(emitter *yaml_emitter_t) bool {
11441149}
11451150
11461151// Write an line comment.
1147- func yaml_emitter_process_line_comment (emitter * yaml_emitter_t ) bool {
1152+ func yaml_emitter_process_line_comment (emitter * yaml_emitter_t , linebreak bool ) bool {
11481153 if len (emitter .line_comment ) == 0 {
1154+ if linebreak && ! put_break (emitter ) {
1155+ return false
1156+ }
11491157 return true
11501158 }
11511159 if ! emitter .whitespace {
@@ -1894,7 +1902,7 @@ func yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bo
18941902 if ! yaml_emitter_write_block_scalar_hints (emitter , value ) {
18951903 return false
18961904 }
1897- if ! yaml_emitter_process_line_comment (emitter ) {
1905+ if ! yaml_emitter_process_line_comment (emitter , true ) {
18981906 return false
18991907 }
19001908 //emitter.indention = true
@@ -1931,7 +1939,7 @@ func yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) boo
19311939 if ! yaml_emitter_write_block_scalar_hints (emitter , value ) {
19321940 return false
19331941 }
1934- if ! yaml_emitter_process_line_comment (emitter ) {
1942+ if ! yaml_emitter_process_line_comment (emitter , true ) {
19351943 return false
19361944 }
19371945
0 commit comments