✨ Add support for mixed-level nested keys with dot/blank handling
- Handle @parent:child and @parent🧒grandchild coexistence
- Use '.' key for parent values when nested children exist
- Add comprehensive test cases for double-nested scenarios
- Support both '.' and '' as special keys for parent values
This commit is contained in:
parent
44ecfd6ac9
commit
6095c2497e
3 changed files with 53 additions and 5 deletions
|
|
@ -88,6 +88,24 @@ func TestEntryMarshal(t *testing.T) {
|
|||
[]string{"@me:age 43", "@me:name:first Dan", "@me:name:last Jones"},
|
||||
nil,
|
||||
},
|
||||
{
|
||||
"double-nested-map-dot",
|
||||
"Title DM",
|
||||
when,
|
||||
[]Meta{{"me", map[string]any{"age": 43, "name": map[string]any{".": "Dan Jones", "nick": "Danny"}}}},
|
||||
"@begin " + whens + " - Title DM",
|
||||
[]string{"@me:age 43", "@me:name Dan Jones", "@me:name:nick Danny"},
|
||||
nil,
|
||||
},
|
||||
{
|
||||
"double-nested-map-blank",
|
||||
"Title DM",
|
||||
when,
|
||||
[]Meta{{"me", map[string]any{"age": 43, "name": map[string]any{"": "Dan Jones", "nick": "Danny"}}}},
|
||||
"@begin " + whens + " - Title DM",
|
||||
[]string{"@me:age 43", "@me:name Dan Jones", "@me:name:nick Danny"},
|
||||
nil,
|
||||
},
|
||||
{
|
||||
"nested-keys-in-json",
|
||||
"Title NKJ",
|
||||
|
|
@ -169,6 +187,14 @@ func TestEntryUnmarshal(t *testing.T) {
|
|||
[]Meta{{"me:name", "Dan"}, {"me:coder", true}},
|
||||
nil,
|
||||
},
|
||||
{
|
||||
"nested-field-dot",
|
||||
"@begin " + whens + " - A Title\n@me:name Dan Jones\n@me:name:nick Danny\n@me:coder true @end",
|
||||
"A Title",
|
||||
when,
|
||||
[]Meta{{"me:name", "Dan Jones"}, {"me:name:nick", "Danny"}, {"me:coder", true}},
|
||||
nil,
|
||||
},
|
||||
{
|
||||
"json-field",
|
||||
"@begin " + whens + " - Some Guy\n" + `@json {"name":"Dan","coder":true} @end`,
|
||||
|
|
@ -256,6 +282,9 @@ func TestEntryJsonMarshal(t *testing.T) {
|
|||
{"nested-field", "A Title", when, []Meta{{"obj:foo", "bar"}, {"obj:title", "Sub-title"}}, `{"title":"A Title","date":"` + whens + `","obj":{"foo":"bar","title":"Sub-title"}}`, nil},
|
||||
{"double-nested-field", "A Title", when, []Meta{{"obj:foo", "bar"}, {"obj:me:name", "Dan"}, {"obj:me:age", 27}}, `{"title":"A Title","date":"` + whens + `","obj":{"foo":"bar","me":{"name":"Dan","age":27}}}`, nil},
|
||||
{"nested-plus-json", "A Title", when, []Meta{{"obj:foo", "bar"}, {"obj:me", json.RawMessage(`{"name":"Dan","age":27}`)}}, `{"title":"A Title","date":"` + whens + `","obj":{"foo":"bar","me":{"name":"Dan","age":27}}}`, nil},
|
||||
{"nested-part", "A Title", when, []Meta{{"obj:foo", "bar"}, {"obj:me", "Dan"}, {"obj:me:age", 27}}, `{"title":"A Title","date":"` + whens + `","obj":{"foo":"bar","me":{".":"Dan","age":27}}}`, nil},
|
||||
{"nested-part-order", "A Title", when, []Meta{{"obj:foo", "bar"}, {"obj:me:age", 27}, {"obj:me", "Dan"}}, `{"title":"A Title","date":"` + whens + `","obj":{"foo":"bar","me":{".":"Dan","age":27}}}`, nil},
|
||||
{"nested-part-order-two", "A Title", when, []Meta{{"obj:foo", "bar"}, {"obj:me:age", 27}, {"obj:me", "Dan"}, {"obj:me:cool", true}}, `{"title":"A Title","date":"` + whens + `","obj":{"foo":"bar","me":{".":"Dan","age":27,"cool":true}}}`, nil},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue