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
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)