...
- 1. If field names do not contain dots (.), then only use dots to represent nested fields.
- 2. If field names contain dots, then:
- wrap the field name with a backtick pair (`...`) by
- adding an opening backtick at the beginning of the field name (beginning of path, or after a dot)
- adding a closing backtick at the end of the field name (end of the path, or before the next dot)
- if a field is wrapped and doesn't contain dots, is processed the same way: field name within the wrapping backticks is used
- 3. If field name includes backticks, then:
- if the backticks are in a wrapping position (opening or closing a field name), then need to be escaped with backslash
- Backslashes (/) do not need to be escaped. If backslash happen to be part of the field name and before a backtick to be escaped, then add another backslash.
- else, backticks do not require escape
- 4. If wrapping backtick pairs are incomplete, Connect configuration must fail fast to avoid getting ambiguous paths deployed.
Examples
Field name | Nested path |
---|
- Normal (no dots or backticks on field names)
|
foo.bar.bazfoo:
| foo: bar: baz: val | OK: foo.bar.baz |
2. Field names including dots | foo |
.`bar.baz` bar.baz: val | OK: foo.`bar.baz` |
2.1 Using backticks within a field name without dots | foo |
.`bar`.bazfoo | OK: foo.`bar`.baz OK: foo.bar.baz ERROR: foo.`bar.baz: no pair ERROR: foo.bar`.baz: no pair |
3. Field names including backticks |
3. Field names including backticks | foo.ba`r.bazfoo.`ba`r`.baz | foo: ba`r: baz: val | OK: foo.ba`r.baz OK: foo.`ba`r`.baz |
3.1. Field names including backticks at wrapping position | foo |
.`bar: bar`.`baz: val | OK: foo.`bar\`.\`baz` ERROR: foo.`bar\`.`baz`: |
bar`.`baz: val no pair ERROR: foo.`bar`.`baz`: valid but different path (see 2.1) |
3.2. Field names including dots and backticks between a backtick pair | foo: b`ar.baz: val | OK: foo.`b`ar.baz` |
3.3. Field names including backslash and backticks at wrapping position | foo: |
b`arbaz`baz: val | OK: foo.`bar\\`.\`baz` |
3. |
34. Field names wrapped by backticks | foo |
.``bar``.bazfoo: `bar`: baz: val | OK: foo.``bar``.baz ERROR: foo.`bar`.baz: valid but different path (see 2.1) |
Affected SMTs
These SMTs will include support for nested structure:
...