mirror of
https://github.com/divkit/divkit.git
synced 2026-05-07 20:02:32 +00:00
Fixed deeply nested template property resolution
commit_hash:ab20e59f17b49d067159784ad367550aeee77e45
This commit is contained in:
@@ -24691,6 +24691,7 @@
|
||||
"test_data/parsing_test_data/required_property_value_is_missing.json":"divkit/public/test_data/parsing_test_data/required_property_value_is_missing.json",
|
||||
"test_data/parsing_test_data/simple_values.json":"divkit/public/test_data/parsing_test_data/simple_values.json",
|
||||
"test_data/parsing_test_data/templates/cross_level_link_resolution_in_items.json":"divkit/public/test_data/parsing_test_data/templates/cross_level_link_resolution_in_items.json",
|
||||
"test_data/parsing_test_data/templates/deeply_nested_card.json":"divkit/public/test_data/parsing_test_data/templates/deeply_nested_card.json",
|
||||
"test_data/parsing_test_data/templates/direct_value_overrides_link.json":"divkit/public/test_data/parsing_test_data/templates/direct_value_overrides_link.json",
|
||||
"test_data/parsing_test_data/templates/invalid_value_replaced_with_default_value_in_div_text.json":"divkit/public/test_data/parsing_test_data/templates/invalid_value_replaced_with_default_value_in_div_text.json",
|
||||
"test_data/parsing_test_data/templates/link_is_overridden_in_derived_template.json":"divkit/public/test_data/parsing_test_data/templates/link_is_overridden_in_derived_template.json",
|
||||
|
||||
@@ -136,6 +136,13 @@ final class UntypedDivTemplateResolver {
|
||||
guard !key.hasPrefix("$") else { continue }
|
||||
result[key] = value
|
||||
}
|
||||
|
||||
for paramName in parameterNames {
|
||||
if result[paramName] == nil, let value = linkSource[paramName] {
|
||||
result[paramName] = value
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"description": "Parameter values are forwarded through a 2-level template chain (container → image) via $-link indirection",
|
||||
"templates": {
|
||||
"inner_template": {
|
||||
"type": "image",
|
||||
"$image_url": "image"
|
||||
},
|
||||
"outer_template": {
|
||||
"type": "container",
|
||||
"items": [
|
||||
{
|
||||
"type": "inner_template"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"card": {
|
||||
"log_id": "test",
|
||||
"states": [
|
||||
{
|
||||
"state_id": 0,
|
||||
"div": {
|
||||
"type": "outer_template",
|
||||
"image": "https://image.url"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"expected": {
|
||||
"card": {
|
||||
"log_id": "test",
|
||||
"states": [
|
||||
{
|
||||
"state_id": 0,
|
||||
"div": {
|
||||
"type": "container",
|
||||
"items": [
|
||||
{
|
||||
"type": "image",
|
||||
"image_url": "https://image.url"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user