appobject.py
changeset 7387 d240cff2d8ba
parent 7083 b8e35cde46e9
child 7815 2a164a9cf81c
equal deleted inserted replaced
7386:206890413858 7387:d240cff2d8ba
   178     def func_name(self):
   178     def func_name(self):
   179         # backward compatibility
   179         # backward compatibility
   180         return self.__class__.__name__
   180         return self.__class__.__name__
   181 
   181 
   182     def search_selector(self, selector):
   182     def search_selector(self, selector):
   183         """search for the given selector or selector instance in the selectors
   183         """search for the given selector, selector instance or tuple of
   184         tree. Return it of None if not found
   184         selectors in the selectors tree. Return None if not found.
   185         """
   185         """
   186         if self is selector:
   186         if self is selector:
   187             return self
   187             return self
   188         if isinstance(selector, type) and isinstance(self, selector):
   188         if (isinstance(selector, type) or isinstance(selector, tuple)) and \
       
   189                isinstance(self, selector):
   189             return self
   190             return self
   190         return None
   191         return None
   191 
   192 
   192     def __str__(self):
   193     def __str__(self):
   193         return self.__class__.__name__
   194         return self.__class__.__name__
   248             else:
   249             else:
   249                 merged_selectors.append(selector)
   250                 merged_selectors.append(selector)
   250         return merged_selectors
   251         return merged_selectors
   251 
   252 
   252     def search_selector(self, selector):
   253     def search_selector(self, selector):
   253         """search for the given selector or selector instance in the selectors
   254         """search for the given selector or selector instance (or tuple of
   254         tree. Return it of None if not found
   255         selectors) in the selectors tree. Return None if not found
   255         """
   256         """
   256         for childselector in self.selectors:
   257         for childselector in self.selectors:
   257             if childselector is selector:
   258             if childselector is selector:
   258                 return childselector
   259                 return childselector
   259             found = childselector.search_selector(selector)
   260             found = childselector.search_selector(selector)
   260             if found is not None:
   261             if found is not None:
   261                 return found
   262                 return found
   262         return None
   263         # if not found in children, maybe we are looking for self?
       
   264         return super(MultiSelector, self).search_selector(selector)
   263 
   265 
   264 
   266 
   265 class AndSelector(MultiSelector):
   267 class AndSelector(MultiSelector):
   266     """and-chained selectors (formerly known as chainall)"""
   268     """and-chained selectors (formerly known as chainall)"""
   267     @lltrace
   269     @lltrace