diff --git a/glue.py b/glue.py index bf0741d..4baa99e 100644 --- a/glue.py +++ b/glue.py @@ -6,12 +6,14 @@ def glue(*args, **kwargs): Glue takes in any number of arguments, named or not, and any depth list It will flatten them all and return them joined with spaces. """ + def _flatten(l): """ from: Cristian at http://stackoverflow.com/a/2158532 """ for el in l: - if isinstance(el, collections.Iterable) and not isinstance(el, basestring): + if isinstance(el, collections.Iterable)\ + and not isinstance(el, basestring): for sub in _flatten(el): yield sub else: @@ -21,13 +23,12 @@ def glue(*args, **kwargs): kwargs = collections.OrderedDict( sorted(kwargs.items(), key=lambda t: t[0])) - what_to_glue = list(args) # Ignore all your keys, because you're doing this wrong anyway what_to_glue.extend([v for k, v in kwargs.iteritems()]) # flatten crap out of this! - what_to_glue = _flatten(what_to_glue) + what_to_glue = _flatten(what_to_glue) # safeguard against nonstrings return " ".join([str(x) for x in what_to_glue])