Fix YamlEditor.update method leaving trailing spaces at eol (dart-lang/yaml_edit#42)
* Fix for selecting the correct index in insertion
* Add new test cases
* Add more tests and format corrections
* Update `CHANGELOG.md`
* Fix leaving whitespace at eol on YamlEditor.update & update the testcases
* Fix formatting
* Apply proposed change
* Update lib/src/map_mutations.dart
Co-authored-by: Jonas Finnemann Jensen <jopsen@gmail.com>
---------
Co-authored-by: Jonas Finnemann Jensen <jopsen@gmail.com>
diff --git a/pkgs/yaml_edit/lib/src/map_mutations.dart b/pkgs/yaml_edit/lib/src/map_mutations.dart
index 9906a65..62d4081 100644
--- a/pkgs/yaml_edit/lib/src/map_mutations.dart
+++ b/pkgs/yaml_edit/lib/src/map_mutations.dart
@@ -139,6 +139,11 @@
valueAsString = lineEnding + valueAsString;
}
+ if (!valueAsString.startsWith(lineEnding)) {
+ // prepend whitespace to ensure there is space after colon.
+ valueAsString = ' ' + valueAsString;
+ }
+
/// +1 accounts for the colon
final start = keyNode.span.end.offset + 1;
var end = getContentSensitiveEnd(map.nodes[key]!);
@@ -148,7 +153,7 @@
/// this.
if (end < start) end = start;
- return SourceEdit(start, end - start, ' ' + valueAsString);
+ return SourceEdit(start, end - start, valueAsString);
}
/// Performs the string operation on [yaml] to achieve the effect of replacing
diff --git a/pkgs/yaml_edit/test/alias_test.dart b/pkgs/yaml_edit/test/alias_test.dart
index 45d7508..1663bd8 100644
--- a/pkgs/yaml_edit/test/alias_test.dart
+++ b/pkgs/yaml_edit/test/alias_test.dart
@@ -118,7 +118,7 @@
test('removing nested map alias anchor results in AliasError', () {
final doc = YamlEditor('''
-a:
+a:
c: &SS Sammy Sosa
b: *SS
''');
@@ -129,7 +129,7 @@
test('removing nested map alias reference results in AliasError', () {
final doc = YamlEditor('''
a: &SS Sammy Sosa
-b:
+b:
c: *SS
''');
diff --git a/pkgs/yaml_edit/test/preservation_test.dart b/pkgs/yaml_edit/test/preservation_test.dart
index 158d325..a763296 100644
--- a/pkgs/yaml_edit/test/preservation_test.dart
+++ b/pkgs/yaml_edit/test/preservation_test.dart
@@ -38,16 +38,16 @@
test('tilde', expectLoadPreservesYAML('~'));
test('false', expectLoadPreservesYAML('false'));
- test('block map', expectLoadPreservesYAML('''a:
+ test('block map', expectLoadPreservesYAML('''a:
b: 1
'''));
- test('block list', expectLoadPreservesYAML('''a:
+ test('block list', expectLoadPreservesYAML('''a:
- 1
'''));
test('complicated example', () {
expectLoadPreservesYAML('''verb: RecommendCafes
map:
- a:
+ a:
b: 1
recipe:
- verb: Score
diff --git a/pkgs/yaml_edit/test/testdata/input/nested_block_map.test b/pkgs/yaml_edit/test/testdata/input/nested_block_map.test
index 69e8b23..bc7c35b 100644
--- a/pkgs/yaml_edit/test/testdata/input/nested_block_map.test
+++ b/pkgs/yaml_edit/test/testdata/input/nested_block_map.test
@@ -1,7 +1,7 @@
NESTED BLOCK MAP
---
a: 1
-b:
+b:
d: 4
e: 5
c: 3
diff --git a/pkgs/yaml_edit/test/testdata/output/nested_block_map.golden b/pkgs/yaml_edit/test/testdata/output/nested_block_map.golden
index 94c4742..d28bf6c 100644
--- a/pkgs/yaml_edit/test/testdata/output/nested_block_map.golden
+++ b/pkgs/yaml_edit/test/testdata/output/nested_block_map.golden
@@ -1,28 +1,28 @@
a: 1
-b:
+b:
d: 4
e: 5
c: 3
---
a: 1
-b:
+b:
d: 4
e: 6
c: 3
---
a: 1
-b:
+b:
d: 4
- e:
+ e:
- 1
- 2
- 3
c: 3
---
a: 1
-b:
+b:
d: 4
- e:
+ e:
- 1
- 2
- 3
diff --git a/pkgs/yaml_edit/test/testdata/output/pubspec.golden b/pkgs/yaml_edit/test/testdata/output/pubspec.golden
index b5e5ea0..ffbe8ba 100644
--- a/pkgs/yaml_edit/test/testdata/output/pubspec.golden
+++ b/pkgs/yaml_edit/test/testdata/output/pubspec.golden
@@ -111,6 +111,6 @@
retry: ^3.0.1
yaml: ^3.2.0 # For YAML
-dev_dependencies:
+dev_dependencies:
test: ^1.14.4
diff --git a/pkgs/yaml_edit/test/update_test.dart b/pkgs/yaml_edit/test/update_test.dart
index 3e392e0..603ece4 100644
--- a/pkgs/yaml_edit/test/update_test.dart
+++ b/pkgs/yaml_edit/test/update_test.dart
@@ -126,7 +126,7 @@
test('nested', () {
final doc = YamlEditor('''
a: 1
-b:
+b:
d: 4
e: 5
c: 3
@@ -135,7 +135,7 @@
expect(doc.toString(), equals('''
a: 1
-b:
+b:
d: 4
e: 6
c: 3
@@ -201,14 +201,14 @@
test('nested (5)', () {
final doc = YamlEditor('''
-a:
+a:
- a: 1
b: 2
- null
''');
doc.update(['a', 0], false);
expect(doc.toString(), equals('''
-a:
+a:
- false
- null
@@ -220,14 +220,14 @@
test('nested (6)', () {
final doc = YamlEditor('''
-a:
+a:
- - 1
- 2
- null
''');
doc.update(['a', 0], false);
expect(doc.toString(), equals('''
-a:
+a:
- false
- null
@@ -261,7 +261,7 @@
doc.update(['a'], {'retry': '3.0.1'});
expect(doc.toString(), equals('''
-a:
+a:
retry: 3.0.1
b: false
'''));
@@ -277,7 +277,7 @@
expect(doc.toString(), equals('''
# comment
-a:
+a:
retry: 3.0.1 # comment
# comment
'''));
@@ -286,7 +286,7 @@
test('nested scalar -> flow list', () {
final doc = YamlEditor('''
a: 1
-b:
+b:
d: 4
e: 5
c: 3
@@ -295,9 +295,9 @@
expect(doc.toString(), equals('''
a: 1
-b:
+b:
d: 4
- e:
+ e:
- 1
- 2
- 3
@@ -316,7 +316,7 @@
test('nested block map -> scalar', () {
final doc = YamlEditor('''
a: 1
-b:
+b:
d: 4
e: 5
c: 3
@@ -334,7 +334,7 @@
test('nested block map -> scalar with comments', () {
final doc = YamlEditor('''
a: 1
-b:
+b:
d: 4
e: 5
@@ -359,7 +359,7 @@
test('nested scalar -> block map', () {
final doc = YamlEditor('''
a: 1
-b:
+b:
d: 4
e: 5
c: 3
@@ -368,9 +368,9 @@
expect(doc.toString(), equals('''
a: 1
-b:
+b:
d: 4
- e:
+ e:
x: 3
y: 4
c: 3
@@ -388,7 +388,7 @@
test('nested block map with comments', () {
final doc = YamlEditor('''
a: 1
-b:
+b:
d: 4
e: 5 # comment
c: 3
@@ -397,7 +397,7 @@
expect(doc.toString(), equals('''
a: 1
-b:
+b:
d: 4
e: 6 # comment
c: 3
@@ -412,7 +412,7 @@
test('nested block map with comments (2)', () {
final doc = YamlEditor('''
a: 1
-b:
+b:
d: 4 # comment
# comment
e: 5 # comment
@@ -423,7 +423,7 @@
expect(doc.toString(), equals('''
a: 1
-b:
+b:
d: 4 # comment
# comment
e: 6 # comment
diff --git a/pkgs/yaml_edit/test/utils_test.dart b/pkgs/yaml_edit/test/utils_test.dart
index 8d9aef5..5d6b76a 100644
--- a/pkgs/yaml_edit/test/utils_test.dart
+++ b/pkgs/yaml_edit/test/utils_test.dart
@@ -213,7 +213,7 @@
}));
expect(doc.toString(), equals('''
-strings:
+strings:
plain: string
folded: >-
string
@@ -366,7 +366,7 @@
});
expect(doc.toString(), equals('''
-a:
+a:
f: ""
g: 1
'''));
@@ -385,7 +385,7 @@
});
expect(doc.toString(), equals('''
-a:
+a:
f: " a"
g: 1
'''));
diff --git a/pkgs/yaml_edit/test/windows_test.dart b/pkgs/yaml_edit/test/windows_test.dart
index ca7a7dc..a516204 100644
--- a/pkgs/yaml_edit/test/windows_test.dart
+++ b/pkgs/yaml_edit/test/windows_test.dart
@@ -62,7 +62,7 @@
test('update nested scalar -> flow list', () {
final doc = YamlEditor('''
a: 1\r
-b: \r
+b:\r
d: 4\r
e: 5\r
c: 3\r
@@ -71,9 +71,9 @@
expect(doc.toString(), equals('''
a: 1\r
-b: \r
+b:\r
d: 4\r
- e: \r
+ e:\r
- 1\r
- 2\r
- 3\r