def __call__(self, entry):
     # description = entry.D
     description = entry.attrDict(indexable=True)
     L = description.get(self.attr)
     if L is None:
         return False
     value = self.value
     for v in L:
         if v.startswith(value):
             return True
     return False
 def __call__(self, entry):
     # description = entry.D
     description = entry.attrDict(indexable=True)
     L = description.get(self.attr)
     if L is None:
         return False
     low = self.low
     high = self.high
     for v in L:
         if v >= low and v <= high:
             return True
     return False
 def __call__(self, entry):
     "determine whether entry matches self"
     # description = entry.D
     description = entry.attrDict(indexable=True)
     L = description.get(self.attr)
     if L is None:
         return False
     value = self.value
     for v in L:
         if v == value:
             return True
     return False
 def __call__(self, entry):
     description = entry.attrDict(indexable=True)
     splitter = self.splitter
     words = self.words
     limit = self.limit
     minlength = entry.MINWORDLENGTH
     for attr in description.keys():
         L = description[attr]
         for v in L:
             if v:  #
                 v = v.lower()
                 if quickProximateFilter(v, words):
                     splitv = splitter(v)
                     if proximateMatchAnywhere(splitv, words, minlength, limit):
                         return True
     return False
 def __call__(self, entry):
     # description = entry.D
     description = entry.attrDict(indexable=True)
     splitter = self.splitter
     word = self.word
     # attrs = description.keys()
     # "description = ", description
     minlength = entry.MINWORDLENGTH
     for attr in description.keys():  # attrs:
         L = description[attr]
         for v in L:
             splitv = splitter(v)
             for vword in splitv:
                 if len(vword) > minlength and vword.startswith(word):
                     return True
     return False
 def __call__(self, entry):
     # description = entry.D
     description = entry.attrDict(indexable=True)
     # pr "testing", description, "looking in", self.attr, "for", self.word
     L = description.get(self.attr)
     if L is None:
         return False
     word = self.word
     splitter = self.splitter
     minlength = entry.MINWORDLENGTH
     for v in L:
         splitv = splitter(v)
         for vword in splitv:
             if len(vword) > minlength and vword.startswith(word):
                 return True
             # pr repr(vword), "too short or doesn't start with", repr(word)
     return False