Enhancements:
* Added new reference command-line tool: yaml-merge. This is a very complex
tool, so a comprehensive treatise will be added to the project Wiki to
explore its capabilities. Along with those of its component classes, its
unit tests also provide many examples of the same.
* YAMLPath instances now support arbitrary changes to separator.
* YAMLPath instances now support equality testing (against the stored path),
immune to differences in separator.
* The get_yaml_data function now supports "-" as a source file. This is
interpreted as a read from STDIN.
* Due to the change to the get_yaml_data function, the yaml-get reference
command-line tool now supports retrieving nodes from YAML/Compatible data
passed to it via STDIN when its YAML_FILE argument is set to -. The new
yaml-merge reference command-line tool also reads from STDIN when one of its
YAML_FILE input arguments is -. No other reference command-line tools
support this change at this time.
Known Issues:
1. Neither yaml-set nor yaml-merge will add override keys to a Hash which uses
the YAML merge operator (<<:) and which does not already have a matching
override key. This issue has existed for a very long time but was only
discovered during preparation for this release. This will be logged and
tracked as a Known Issue for this release -- to be fixed at another time --
because no one (not even myself) has yet encountered/reported this issue, it
is non-trivial to fix, and it is an edge-case. Here is an example of this
issue:
For ex.yaml:
---
anchored_hash: &its_anchor
ah_key: Base value
merging_hash:
<<: *its_anchor
mh_key: Implementation value
... both of these commands:
`yaml-set --change=/merging_hash/ah_key --value='Override value' ex.yaml`
`echo 'Override value' | yaml-merge -m /merging_hash/ah_key ex.yaml -`
... will fail to affect the expected change. The expectation would be:
---
anchored_hash: &its_anchor
ah_key: Base value
merging_hash:
<<: *its_anchor
mh_key: Implementation value
ah_key: Override value
... but the actual result is (without any indication of an error):
---
anchored_hash: &its_anchor
ah_key: Base value
merging_hash:
<<: *its_anchor
mh_key: Implementation value