Esempio n. 1
0
    def assign_on_key(self,lhs,key,rhs,active_event):
        '''
        For bracket statements + struct statements
        '''
        if not isinstance(lhs,WaldoLockedObj):
            return False

        raw_key = self.get_val_if_waldo(key,active_event)
        if is_non_ext_text_var(lhs):
            raw_rhs = self.get_val_if_waldo(rhs,active_event)            
            to_overwrite_string = lhs.get_val(active_event)
            to_overwrite_string[raw_key] = raw_rhs
            lhs.set_val(active_event,to_overwrite_string)

        elif isinstance(lhs,WaldoExternalTextVariable):
            raw_rhs = self.get_val_if_waldo(rhs,active_event)            
            to_overwrite_string = lhs.get_val(active_event).get_val(active_event)
            to_overwrite_string[raw_key] = raw_rhs
            lhs.get_val(active_event).set_val(active_event,to_overwrite_string)
        elif is_reference_container(lhs):
            # just write the value explicitly for now.  Later, will
            # need to check if we need to wrap it first.
            lhs.get_val(active_event).set_val_on_key(active_event,raw_key,rhs)
        else:
            # just write the value explicitly for now.  Later, will
            # need to check if we need to wrap it first.
            lhs.get_val(active_event).set_val_on_key(active_event,raw_key,rhs)

        return True
Esempio n. 2
0
    def get_val_on_key(self,to_get_from,key,active_event):
        raw_key = self.get_val_if_waldo(key,active_event)
        
        if not isinstance(to_get_from,WaldoLockedObj):
            return to_get_from[raw_key]

        # handle text + ext text
        if is_non_ext_text_var(lhs):
            return to_get_from.get_val(active_event)[raw_key]

        if isinstance(lhs,WaldoExternalTextVariable):
            return to_get_from.get_val(active_event).get_val(active_event)[raw_key]

        # handle internals containers
        if is_reference_container(lhs):
            return to_get_from.get_val_on_key(active_event,raw_key)

        # handle map, list, struct
        return to_get_from.get_val(active_event).get_val_on_key(active_event,raw_key)