The yaml package (in v2.3.0 at least) does not support !!merge tags.
For implicit instances (with only a map key of <<) it gets just interpreted as a !!str node.
If the !!merge tag is given explicitly an exception is thrown.
import 'package:yaml/yaml.dart';
const yamlImplicitMerge = '''---
test: &anchor
ancValue1: 1
ancValue2: 2
ancUse:
someOther: 3
<<: *anchor
''';
const yamlExplicitMerge = '''---
test: &anchor
ancValue1: 1
ancValue2: 2
ancUse:
someOther: 3
!!merge <<: *anchor
''';
void main(List<String> arguments) {
<String Function()>[
() => 'implicit merge gets ignored:',
() => loadYaml(yamlImplicitMerge),
() => '————————————————————————————————',
() => 'Explicit merge throws exception:',
() => loadYaml(yamlExplicitMerge),
].forEach((lazyString) => print(lazyString()));
}
outputs
> dart run .\bin\yaml_test.dart
implicit merge gets ignored:
{test: {ancValue1: 1, ancValue2: 2}, ancUse: {someOther: 3, <<: {ancValue1: 1, ancValue2: 2}}}
————————————————————————————————
Explicit merge throws exception:
Unhandled exception:
Error on line 7, column 3: Undefined tag: tag:yaml.org,2002:merge.
╷
7 │ !!merge <<: *anchor
│ ^^^^^^^^^^
╵
#0 Loader._parseByTag (package:yaml/src/loader.dart:201:9)
#1 Loader._loadScalar (package:yaml/src/loader.dart:120:14)
#2 Loader._loadNode (package:yaml/src/loader.dart:85:16)
#3 Loader._loadMapping (package:yaml/src/loader.dart:165:17)
#4 Loader._loadNode (package:yaml/src/loader.dart:89:16)
#5 Loader._loadMapping (package:yaml/src/loader.dart:166:19)
#6 Loader._loadNode (package:yaml/src/loader.dart:89:16)
#7 Loader._loadDocument (package:yaml/src/loader.dart:65:20)
#8 Loader.load (package:yaml/src/loader.dart:57:20)
#9 loadYamlDocument (package:yaml/yaml.dart:69:25)
#10 loadYamlNode (package:yaml/yaml.dart:54:5)
#11 loadYaml (package:yaml/yaml.dart:41:5)
#12 main.<anonymous closure> (file:///G:/My%20Drive/dev/yaml_test/bin/yaml_test.dart:27:11)
#13 main.<anonymous closure> (file:///G:/My%20Drive/dev/yaml_test/bin/yaml_test.dart:28:31)
#14 List.forEach (dart:core-patch/growable_array.dart:403:8)
#15 main (file:///G:/My%20Drive/dev/yaml_test/bin/yaml_test.dart:28:5)
#16 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:281:32)
#17 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)
The yaml package (in v2.3.0 at least) does not support
!!mergetags.For implicit instances (with only a map key of
<<) it gets just interpreted as a!!strnode.If the
!!mergetag is given explicitly an exception is thrown.outputs