pub enum Op<'doc> {
RewriteFragment {
from: Cow<'doc, str>,
to: Cow<'doc, str>,
after: Option<usize>,
},
Replace(Value),
Add {
key: String,
value: Value,
},
MergeInto {
key: String,
updates: IndexMap<String, Value>,
},
Remove,
}Expand description
Represents a YAML patch operation.
Variants§
RewriteFragment
Rewrites a fragment of a feature at the given path.
This can be used to perform graceful rewrites of string values, regardless of their nested position or single/multi-line nature.
For example, the following:
run: |
echo "foo: ${{ foo }}"can be rewritten to:
run: |
echo "foo ${FOO}"via a RewriteFragment with:
route: "/run",
from: "${{ foo }}",
to: "${FOO}",This operation performs exactly one rewrite at a time, meaning
that the first match of from in the feature will be replaced.
This can be made more precise by passing a after index,
which specifies that the rewrite should only occur on
the first match of from that occurs after the given byte index.
Replace(Value)
Replace the value at the given path
Add
Add a new key-value pair at the given path.
The route should point to a mapping.
Limitations:
- The mapping must be a block mapping or single-line flow mapping. Multi-line flow mappings are not currently supported.
- The key must not already exist in the targeted mapping.
MergeInto
Update a mapping at the given path.
If the mapping does not already exist, it will be created.
Remove
Remove the key at the given path