A hole is the absence of a key, which has keys below it, e.g. if some/key
is missing in a property file:
some = value
some/key/below = value
some
has a non-leaf value. Another example of a non-leaf value in XML (abc
):
<abc>value<def>value2</def></abc>
interpreted by xerces plugin:
abc/def = value2
abc = value
Config files ideally do not copy any structure if they only want to set a single key.
- strongly hierarchically structured data must still be supported
- data structure must always be complete
- prohibit non-leaves values
Support holes and values for non-leaves in a KeySet if the underlying format allows it.
If the underlying format does not support it and there is also not an obvious way how to circumvent it -- e.g., JSON which does not have comments -- holes and values in non-leaves can be supported with key names starting with ®elektra.
- It fits very good to the idea of key-value.
- Some formats support it (e.g. XML supports non-leaves values; property-files support holes).
- It can be useful for migration purposes, e.g. there is
/some/key
, and later/some/key/enable
gets added. Then it is beneficial if/some/key
still can hold a value.