CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Public Attributes | Private Member Functions
BeautifulSoup.SoupStrainer Class Reference

Public Member Functions

def __init__
 
def __str__
 
def search
 
def searchTag
 

Public Attributes

 attrs
 
 name
 
 text
 

Private Member Functions

def _matches
 

Detailed Description

Encapsulates a number of ways of matching a markup element (tag or
text).

Definition at line 889 of file BeautifulSoup.py.

Constructor & Destructor Documentation

def BeautifulSoup.SoupStrainer.__init__ (   self,
  name = None,
  attrs = {},
  text = None,
  kwargs 
)

Definition at line 893 of file BeautifulSoup.py.

894  def __init__(self, name=None, attrs={}, text=None, **kwargs):
895  self.name = name
896  if isinstance(attrs, basestring):
897  kwargs['class'] = _match_css_class(attrs)
898  attrs = None
899  if kwargs:
900  if attrs:
901  attrs = attrs.copy()
902  attrs.update(kwargs)
903  else:
904  attrs = kwargs
905  self.attrs = attrs
906  self.text = text

Member Function Documentation

def BeautifulSoup.SoupStrainer.__str__ (   self)

Definition at line 907 of file BeautifulSoup.py.

References BeautifulSoup.Tag.attrs, BeautifulSoup.SoupStrainer.attrs, cond::TagInfo.name, genericValidation.GenericValidation.name, TmModule.name, ora::RecordSpecImpl::Item.name, alignment.Alignment.name, PixelDCSObject< class >::Item.name, XMLHTRZeroSuppressionLoader::_loaderBaseConfig.name, XMLRBXPedestalsLoader::_loaderBaseConfig.name, lumi::TriggerInfo.name, cond::TimeTypeSpecs.name, PixelEndcapLinkMaker::Item.name, PixelBarrelLinkMaker::Item.name, Mapper::definition< ScannerT >.name, MEtoEDM< T >::MEtoEDMObject.name, ExpressionHisto< T >.name, XMLProcessor::_loaderBaseConfig.name, PhysicsTools::Calibration::Variable.name, h4DSegm.name, MuonGeometrySanityCheckPoint.name, h2DSegm.name, plotscripts.SawTeethFunction.name, hTMaxCell.name, BeautifulSoup.Tag.name, BeautifulSoup.SoupStrainer.name, TmCcu.text, TmApvPair.text, TmModule.text, TmPsu.text, BeautifulSoup.Tag.text, and BeautifulSoup.SoupStrainer.text.

908  def __str__(self):
909  if self.text:
910  return self.text
911  else:
912  return "%s|%s" % (self.name, self.attrs)
def BeautifulSoup.SoupStrainer._matches (   self,
  markup,
  matchAgainst 
)
private

Definition at line 977 of file BeautifulSoup.py.

Referenced by BeautifulSoup.SoupStrainer.search(), and BeautifulSoup.SoupStrainer.searchTag().

978  def _matches(self, markup, matchAgainst):
979  #print "Matching %s against %s" % (markup, matchAgainst)
980  result = False
981  if matchAgainst is True:
982  result = markup is not None
983  elif callable(matchAgainst):
984  result = matchAgainst(markup)
985  else:
986  #Custom match methods take the tag as an argument, but all
987  #other ways of matching match the tag name as a string.
988  if isinstance(markup, Tag):
989  markup = markup.name
990  if markup and not isinstance(markup, basestring):
991  markup = unicode(markup)
992  #Now we know that chunk is either a string, or None.
993  if hasattr(matchAgainst, 'match'):
994  # It's a regexp object.
995  result = markup and matchAgainst.search(markup)
996  elif hasattr(matchAgainst, '__iter__'): # list-like
997  result = markup in matchAgainst
998  elif hasattr(matchAgainst, 'items'):
999  result = markup.has_key(matchAgainst)
1000  elif matchAgainst and isinstance(markup, basestring):
1001  if isinstance(markup, unicode):
1002  matchAgainst = unicode(matchAgainst)
1003  else:
1004  matchAgainst = str(matchAgainst)
1005 
1006  if not result:
1007  result = matchAgainst == markup
1008  return result
def BeautifulSoup.SoupStrainer.search (   self,
  markup 
)

Definition at line 950 of file BeautifulSoup.py.

References BeautifulSoup.SoupStrainer._matches(), BeautifulSoup.SoupStrainer.search(), BeautifulSoup.SoupStrainer.searchTag(), TmCcu.text, TmApvPair.text, TmModule.text, TmPsu.text, BeautifulSoup.Tag.text, and BeautifulSoup.SoupStrainer.text.

Referenced by BeautifulSoup.SoupStrainer.search().

951  def search(self, markup):
952  #print 'looking for %s in %s' % (self, markup)
953  found = None
954  # If given a list of items, scan it for a text element that
955  # matches.
956  if hasattr(markup, "__iter__") \
957  and not isinstance(markup, Tag):
958  for element in markup:
959  if isinstance(element, NavigableString) \
960  and self.search(element):
961  found = element
962  break
963  # If it's a Tag, make sure its name or attributes match.
964  # Don't bother with Tags if we're searching for text.
965  elif isinstance(markup, Tag):
966  if not self.text:
967  found = self.searchTag(markup)
968  # If it's text, make sure the text matches.
969  elif isinstance(markup, NavigableString) or \
970  isinstance(markup, basestring):
971  if self._matches(markup, self.text):
972  found = markup
973  else:
974  raise Exception, "I don't know how to match against a %s" \
975  % markup.__class__
976  return found
def BeautifulSoup.SoupStrainer.searchTag (   self,
  markupName = None,
  markupAttrs = {} 
)

Definition at line 913 of file BeautifulSoup.py.

References BeautifulSoup.SoupStrainer._matches(), cond::TagInfo.name, genericValidation.GenericValidation.name, TmModule.name, ora::RecordSpecImpl::Item.name, alignment.Alignment.name, PixelDCSObject< class >::Item.name, lumi::TriggerInfo.name, XMLHTRZeroSuppressionLoader::_loaderBaseConfig.name, XMLRBXPedestalsLoader::_loaderBaseConfig.name, cond::TimeTypeSpecs.name, PixelEndcapLinkMaker::Item.name, PixelBarrelLinkMaker::Item.name, Mapper::definition< ScannerT >.name, MEtoEDM< T >::MEtoEDMObject.name, ExpressionHisto< T >.name, XMLProcessor::_loaderBaseConfig.name, PhysicsTools::Calibration::Variable.name, h4DSegm.name, MuonGeometrySanityCheckPoint.name, h2DSegm.name, plotscripts.SawTeethFunction.name, hTMaxCell.name, BeautifulSoup.Tag.name, and BeautifulSoup.SoupStrainer.name.

Referenced by BeautifulSoup.SoupStrainer.search().

914  def searchTag(self, markupName=None, markupAttrs={}):
915  found = None
916  markup = None
917  if isinstance(markupName, Tag):
918  markup = markupName
919  markupAttrs = markup
920  callFunctionWithTagData = callable(self.name) \
921  and not isinstance(markupName, Tag)
922 
923  if (not self.name) \
924  or callFunctionWithTagData \
925  or (markup and self._matches(markup, self.name)) \
926  or (not markup and self._matches(markupName, self.name)):
927  if callFunctionWithTagData:
928  match = self.name(markupName, markupAttrs)
929  else:
930  match = True
931  markupAttrMap = None
932  for attr, matchAgainst in self.attrs.items():
933  if not markupAttrMap:
934  if hasattr(markupAttrs, 'get'):
935  markupAttrMap = markupAttrs
936  else:
937  markupAttrMap = {}
938  for k,v in markupAttrs:
939  markupAttrMap[k] = v
940  attrValue = markupAttrMap.get(attr)
941  if not self._matches(attrValue, matchAgainst):
942  match = False
943  break
944  if match:
945  if markup:
946  found = markup
947  else:
948  found = markupName
949  return found

Member Data Documentation

BeautifulSoup.SoupStrainer.attrs

Definition at line 904 of file BeautifulSoup.py.

Referenced by BeautifulSoup.SoupStrainer.__str__().

BeautifulSoup.SoupStrainer.name

Definition at line 894 of file BeautifulSoup.py.

Referenced by dirstructure.Directory.__create_pie_image(), dqm_interfaces.DirID.__eq__(), dirstructure.Directory.__get_full_path(), dirstructure.Comparison.__get_img_name(), dataset.Dataset.__getDataType(), dataset.Dataset.__getFileInfoList(), dirstructure.Comparison.__make_image(), dirstructure.Directory.__repr__(), dqm_interfaces.DirID.__repr__(), dirstructure.Comparison.__repr__(), BeautifulSoup.SoupStrainer.__str__(), dirstructure.Directory.calcStats(), python.rootplot.utilities.Hist.divide(), python.rootplot.utilities.Hist.divide_wilson(), TreeCrawler.Package.dump(), utils.StatisticalTest.get_status(), dirstructure.Directory.print_report(), BeautifulSoup.SoupStrainer.searchTag(), python.rootplot.utilities.Hist.TGraph(), python.rootplot.utilities.Hist.TH1F(), and Vispa.Views.PropertyView.Property.valueChanged().

BeautifulSoup.SoupStrainer.text

Definition at line 905 of file BeautifulSoup.py.

Referenced by Vispa.Views.TableView.TableWidgetItem.__lt__(), BeautifulSoup.SoupStrainer.__str__(), and BeautifulSoup.SoupStrainer.search().