def set_path_value()

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)