diff options
Diffstat (limited to 'libbe')
-rw-r--r-- | libbe/bug.py | 11 | ||||
-rw-r--r-- | libbe/utility.py | 21 |
2 files changed, 22 insertions, 10 deletions
diff --git a/libbe/bug.py b/libbe/bug.py index e3dc1e0..f3448e2 100644 --- a/libbe/bug.py +++ b/libbe/bug.py @@ -187,15 +187,8 @@ class Bug(settings_object.SavedSettingsObject): doc="An integer version of .time_string") def _extra_strings_check_fn(value): - "Require an iterable full of strings" - if value == settings_object.EMPTY: - return True - elif not hasattr(value, "__iter__"): - return False - for x in value: - if type(x) not in types.StringTypes: - return False - return True + return utility.iterable_full_of_strings(value, \ + alternative=settings_object.EMPTY) def _extra_strings_change_hook(self, old, new): self.extra_strings.sort() # to make merging easier self._prop_save_settings(old, new) diff --git a/libbe/utility.py b/libbe/utility.py index f27d7eb..3df06b4 100644 --- a/libbe/utility.py +++ b/libbe/utility.py @@ -23,7 +23,6 @@ import time import types import doctest - def search_parent_directories(path, filename): """ Find the file (or directory) named filename in path or in any @@ -106,5 +105,25 @@ def time_to_gmtime(str_time): time_val = str_to_time(str_time) return time_to_str(time_val) +def iterable_full_of_strings(value, alternative=None): + """ + Require an iterable full of strings. + >>> iterable_full_of_strings([]) + True + >>> iterable_full_of_strings(["abc", "def", u"hij"]) + True + >>> iterable_full_of_strings(["abc", None, u"hij"]) + False + >>> iterable_full_of_strings(None, alternative=None) + True + """ + if value == alternative: + return True + elif not hasattr(value, "__iter__"): + return False + for x in value: + if type(x) not in types.StringTypes: + return False + return True suite = doctest.DocTestSuite() |