summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bs4/__init__.py2
-rw-r--r--bs4/element.py6
-rw-r--r--bs4/util.py15
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)