Просмотр исходного кода

Fix sequence indent of 2 under map after comment (#508)

Gustavo Niemeyer 6 лет назад
Родитель
Сommit
fc94e3f716
2 измененных файлов с 95 добавлено и 44 удалено
  1. 1 1
      emitterc.go
  2. 94 43
      node_test.go

+ 1 - 1
emitterc.go

@@ -727,7 +727,7 @@ func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_
 	if first {
 		// [Go] The original logic here would not indent the sequence when inside a mapping.
 		// In Go we always indent it, but take the sequence indicator out of the indentation.
-		indentless := emitter.best_indent == 2 && emitter.mapping_context && !emitter.indention
+		indentless := emitter.best_indent == 2 && emitter.mapping_context && (emitter.column == 0 || !emitter.indention)
 		original := emitter.indent
 		if !yaml_emitter_increase_indent(emitter, false, indentless) {
 			return false

+ 94 - 43
node_test.go

@@ -494,6 +494,57 @@ var nodeTests = []struct {
 				}},
 			}},
 		},
+	}, {
+		"a: # AI\n- b\nc:\n- d\n",
+		yaml.Node{
+			Kind:   yaml.DocumentNode,
+			Line:   1,
+			Column: 1,
+			Content: []*yaml.Node{{
+				Kind:   yaml.MappingNode,
+				Tag:    "!!map",
+				Line:   1,
+				Column: 1,
+				Content: []*yaml.Node{{
+					Kind:        yaml.ScalarNode,
+					Tag:         "!!str",
+					Value:       "a",
+					LineComment: "# AI",
+					Line:        1,
+					Column:      1,
+				}, {
+					Kind: yaml.SequenceNode,
+					Tag:  "!!seq",
+					Content: []*yaml.Node{{
+						Kind:   yaml.ScalarNode,
+						Tag:    "!!str",
+						Value:  "b",
+						Line:   2,
+						Column: 3,
+					}},
+					Line:   2,
+					Column: 1,
+				}, {
+					Kind:   yaml.ScalarNode,
+					Tag:    "!!str",
+					Value:  "c",
+					Line:   3,
+					Column: 1,
+				}, {
+					Kind: yaml.SequenceNode,
+					Tag:  "!!seq",
+					Content: []*yaml.Node{{
+						Kind:   yaml.ScalarNode,
+						Tag:    "!!str",
+						Value:  "d",
+						Line:   4,
+						Column: 3,
+					}},
+					Line:   4,
+					Column: 1,
+				}},
+			}},
+		},
 	}, {
 		"- a\n- b\n",
 		yaml.Node{
@@ -717,9 +768,9 @@ var nodeTests = []struct {
 
 		"[decode]\n# One\n\n# Two\n\n# Three\ntrue # Four\n# Five\n\n# Six\n\n# Seven\n",
 		yaml.Node{
-			Kind:   yaml.DocumentNode,
-			Line:   7,
-			Column: 1,
+			Kind:        yaml.DocumentNode,
+			Line:        7,
+			Column:      1,
 			HeadComment: "# One\n\n# Two",
 			FootComment: "# Six\n\n# Seven",
 			Content: []*yaml.Node{{
@@ -1405,11 +1456,11 @@ var nodeTests = []struct {
 					Line:   2,
 					Column: 3,
 					Content: []*yaml.Node{{
-						Kind:        yaml.ScalarNode,
-						Tag:         "!!str",
-						Value:       "kb",
-						Line:        2,
-						Column:      3,
+						Kind:   yaml.ScalarNode,
+						Tag:    "!!str",
+						Value:  "kb",
+						Line:   2,
+						Column: 3,
 					}, {
 						Kind:   yaml.ScalarNode,
 						Tag:    "!!str",
@@ -1418,11 +1469,11 @@ var nodeTests = []struct {
 						Column: 7,
 					}},
 				}, {
-					Kind:        yaml.ScalarNode,
-					Tag:         "!!str",
-					Value:       "kc",
-					Line:        5,
-					Column:      1,
+					Kind:   yaml.ScalarNode,
+					Tag:    "!!str",
+					Value:  "kc",
+					Line:   5,
+					Column: 1,
 				}, {
 					Kind:   yaml.ScalarNode,
 					Tag:    "!!str",
@@ -1444,22 +1495,22 @@ var nodeTests = []struct {
 				Line:   1,
 				Column: 1,
 				Content: []*yaml.Node{{
-					Kind:        yaml.ScalarNode,
-					Tag:         "!!str",
-					Value:       "ka",
-					Line:        1,
-					Column:      1,
+					Kind:   yaml.ScalarNode,
+					Tag:    "!!str",
+					Value:  "ka",
+					Line:   1,
+					Column: 1,
 				}, {
 					Kind:   yaml.MappingNode,
 					Tag:    "!!map",
 					Line:   2,
 					Column: 3,
 					Content: []*yaml.Node{{
-						Kind:        yaml.ScalarNode,
-						Tag:         "!!str",
-						Value:       "kb",
-						Line:        2,
-						Column:      3,
+						Kind:   yaml.ScalarNode,
+						Tag:    "!!str",
+						Value:  "kb",
+						Line:   2,
+						Column: 3,
 					}, {
 						Kind:   yaml.ScalarNode,
 						Tag:    "!!str",
@@ -1496,22 +1547,22 @@ var nodeTests = []struct {
 				Line:   1,
 				Column: 1,
 				Content: []*yaml.Node{{
-					Kind:        yaml.ScalarNode,
-					Tag:         "!!str",
-					Value:       "ka",
-					Line:        1,
-					Column:      1,
+					Kind:   yaml.ScalarNode,
+					Tag:    "!!str",
+					Value:  "ka",
+					Line:   1,
+					Column: 1,
 				}, {
 					Kind:   yaml.MappingNode,
 					Tag:    "!!map",
 					Line:   2,
 					Column: 3,
 					Content: []*yaml.Node{{
-						Kind:        yaml.ScalarNode,
-						Tag:         "!!str",
-						Value:       "kb",
-						Line:        2,
-						Column:      3,
+						Kind:   yaml.ScalarNode,
+						Tag:    "!!str",
+						Value:  "kb",
+						Line:   2,
+						Column: 3,
 					}, {
 						Kind:   yaml.ScalarNode,
 						Tag:    "!!str",
@@ -1548,22 +1599,22 @@ var nodeTests = []struct {
 				Line:   1,
 				Column: 1,
 				Content: []*yaml.Node{{
-					Kind:        yaml.ScalarNode,
-					Tag:         "!!str",
-					Value:       "ka",
-					Line:        1,
-					Column:      1,
+					Kind:   yaml.ScalarNode,
+					Tag:    "!!str",
+					Value:  "ka",
+					Line:   1,
+					Column: 1,
 				}, {
 					Kind:   yaml.MappingNode,
 					Tag:    "!!map",
 					Line:   2,
 					Column: 3,
 					Content: []*yaml.Node{{
-						Kind:        yaml.ScalarNode,
-						Tag:         "!!str",
-						Value:       "kb",
-						Line:        2,
-						Column:      3,
+						Kind:   yaml.ScalarNode,
+						Tag:    "!!str",
+						Value:  "kb",
+						Line:   2,
+						Column: 3,
 					}, {
 						Kind:   yaml.ScalarNode,
 						Tag:    "!!str",