Andrew Bullock Andrew Bullock - 2 months ago 11
YAML Question

how to reference a YAML "setting" from elsewhere in the same YAML file?

I have the following YAML:

paths:
patha: /path/to/root/a
pathb: /path/to/root/b
pathc: /path/to/root/c


How can I "normalise" this, by removing
/path/to/root/
from the three paths, and have it as its own setting, something like:

paths:
root: /path/to/root/
patha: *root* + a
pathb: *root* + b
pathc: *root* + c


Obviously that's invalid, I just made it up. What's the real syntax? Can it be done?

Answer

I don't think it is possible. You can reuse "node" but not part of it.

bill-to: &id001
    given  : Chris
    family : Dumars
ship-to: *id001

This is perfectly valid YAML and fields given and family are reused in ship-to block. You can reuse a scalar node the same way but there's no way you can change what's inside and add that last part of a path to it from inside YAML.

If repetition bother you that much I suggest to make your application aware of root property and add it to every path that looks relative not absolute.

Comments