in libraries/botbuilder-dialogs/botbuilder/dialogs/object_path.py [0:0]
def set_path_value(obj, path: str, value: object):
"""
Given an object evaluate a path to set the value.
"""
segments = ObjectPath.try_resolve_path(obj, path)
if not segments:
return
current = obj
for i in range(len(segments) - 1):
segment = segments[i]
if ObjectPath.is_int(segment):
index = int(segment)
next_obj = current[index]
if not next_obj and len(current) <= index:
# Expand list to index
current += [None] * ((index + 1) - len(current))
next_obj = current[index]
else:
next_obj = ObjectPath.__get_object_property(current, segment)
if not next_obj:
# Create object or list based on next segment
next_segment = segments[i + 1]
if not ObjectPath.is_int(next_segment):
ObjectPath.__set_object_segment(current, segment, {})
else:
ObjectPath.__set_object_segment(current, segment, [])
next_obj = ObjectPath.__get_object_property(current, segment)
current = next_obj
last_segment = segments[-1]
ObjectPath.__set_object_segment(current, last_segment, value)