diff options
-rw-r--r-- | bs4/__init__.py | 2 | ||||
-rw-r--r-- | bs4/element.py | 6 | ||||
-rw-r--r-- | bs4/util.py | 15 |
3 files changed, 18 insertions, 5 deletions
diff --git a/bs4/__init__.py b/bs4/__init__.py index e0eba75..e84e699 100644 --- a/bs4/__init__.py +++ b/bs4/__init__.py @@ -27,7 +27,7 @@ __all__ = ['BeautifulSoup'] import re -from util import isList, buildSet +from util import buildSet from builder import builder_registry from dammit import UnicodeDammit from element import DEFAULT_OUTPUT_ENCODING, NavigableString, Tag diff --git a/bs4/element.py b/bs4/element.py index 6fb6210..587078c 100644 --- a/bs4/element.py +++ b/bs4/element.py @@ -6,8 +6,6 @@ except ImportError: name2codepoint = {} from bs4.dammit import EntitySubstitution -from util import isList - DEFAULT_OUTPUT_ENCODING = "utf-8" @@ -771,7 +769,7 @@ class SoupStrainer(object): found = None # If given a list of items, scan it for a text element that # matches. - if isList(markup) and not isinstance(markup, Tag): + if hasattr(markup, '__iter__') and not isinstance(markup, Tag): for element in markup: if isinstance(element, NavigableString) \ and self.search(element): @@ -810,7 +808,7 @@ class SoupStrainer(object): if hasattr(matchAgainst, 'match'): # It's a regexp object. result = markup and matchAgainst.search(markup) - elif (isList(matchAgainst) + elif (hasattr(matchAgainst, '__iter__') and (markup is not None or not isinstance(matchAgainst, basestring))): result = markup in matchAgainst diff --git a/bs4/util.py b/bs4/util.py new file mode 100644 index 0000000..3cfeaf5 --- /dev/null +++ b/bs4/util.py @@ -0,0 +1,15 @@ +# Helper functions and mixin classes for Beautiful Soup + +import types +try: + set +except NameError: + from sets import Set as set + +def buildSet(args=None): + """Turns a list or a string into a set.""" + if isinstance(args, str): + return set([args]) + if args is None: + return set() + return set(args) |