added comments and docstrings
This commit is contained in:
parent
298674c83b
commit
725ccd5c7e
31
glue.py
31
glue.py
@ -1,16 +1,31 @@
|
|||||||
import collections
|
import collections
|
||||||
|
|
||||||
|
|
||||||
def glue(*args, **kwargs):
|
def glue(*args, **kwargs):
|
||||||
def flatten(l):
|
"""
|
||||||
|
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:
|
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):
|
for sub in _flatten(el):
|
||||||
yield sub
|
yield sub
|
||||||
else:
|
else:
|
||||||
yield el
|
yield el
|
||||||
what_to_glue = list(args)
|
|
||||||
kwargs = collections.OrderedDict(sorted(kwargs.items(), key=lambda t: t[0])) # I dont care what order you submit them in, they will be alphabetical
|
# I dont care what order you submit them in, they will be alphabetical
|
||||||
what_to_glue.extend([v for k,v in kwargs.iteritems()]) # Ignore all your keys, because you're doing this wrong anyway
|
kwargs = collections.OrderedDict(
|
||||||
what_to_glue = flatten(what_to_glue)
|
sorted(kwargs.items(), key=lambda t: t[0]))
|
||||||
what_to_glue = [str(x) for x in what_to_glue]
|
|
||||||
return " ".join(what_to_glue)
|
# Ignore all your keys, because you're doing this wrong anyway
|
||||||
|
what_to_glue = list(args).extend([v for k, v in kwargs.iteritems()])
|
||||||
|
|
||||||
|
# flatten crap out of this!
|
||||||
|
what_to_glue = _flatten(what_to_glue)
|
||||||
|
|
||||||
|
# safeguard against nonstrings
|
||||||
|
return " ".join([str(x) for x in what_to_glue])
|
||||||
|
Loading…
Reference in New Issue
Block a user