def slug_to_lower(fn):
"""
Decorator to lowercase string arguments to a function.
"""
import string
def wrapped(*args, **kwargs):
neo_args = []
for x in args:
if isinstance(x, str) or isinstance(x, unicode):
neo_args.append(string.lower(x))
else:
neo_args.append(x)
neo_kwargs = {}
for k in kwargs:
if isinstance(kwargs[k], str) or isinstance(kwargs[k], unicode):
neo_kwargs[k] = string.lower(kwargs[k])
else:
neo_kwargs[k] = kwargs[k]
return fn(*neo_args, **neo_kwargs)
return wrapped
Refactorings
No refactoring yet !
Hugh Brown
June 4, 2009, June 04, 2009 19:32, permalink
def slug_to_lower(fn):
"""
Decorator to lowercase string arguments to a function.
"""
import string
def is_string(x):
return isinstance(x, str) or isinstance(x, unicode)
def wrapped(*args, **kwargs):
neo_args = []
for x in args:
if is_string(x):
neo_args.append(string.lower(x))
else:
neo_args.append(x)
neo_kwargs = {}
for k,v in kwargs.items():
if is_string(x):
neo_kwargs[k] = string.lower(v)
else:
neo_kwargs[k] = v
return fn(*neo_args, **neo_kwargs)
return wrapped
Hugh Brown
June 4, 2009, June 04, 2009 19:34, permalink
def slug_to_lower(fn):
"""
Decorator to lowercase string arguments to a function.
"""
import string
def is_string(x):
return isinstance(x, str) or isinstance(x, unicode)
def map_value(x):
return (x if not is_string(x) else string.tolower(x))
def wrapped(*args, **kwargs):
neo_args = []
for x in args:
neo_args.append(map_value(x))
neo_kwargs = {}
for k,v in kwargs.items():
neo_kwargs[k] = map_value(v)
return fn(*neo_args, **neo_kwargs)
return wrapped
Hugh Brown
June 4, 2009, June 04, 2009 19:36, permalink
def slug_to_lower(fn):
"""
Decorator to lowercase string arguments to a function.
"""
import string
def is_string(x):
return isinstance(x, str) or isinstance(x, unicode)
def map_value(x):
return (x if not is_string(x) else string.tolower(x))
def wrapped(*args, **kwargs):
neo_args = [map_value(x) for x in args]
neo_kwargs = dict([(k, map_value(v)) for k,v in kwargs.items()])
return fn(*neo_args, **neo_kwargs)
return wrapped
ielectric.myopenid.com
June 4, 2009, June 04, 2009 23:39, permalink
def slug_to_lower(fn):
"""
Decorator to lowercase string arguments to a function.
"""
def map_value(x):
return (x if not isinstance(x, basestring) else x.lower())
def wrapped(*args, **kwargs):
args = map(map_value(x), args)
kwargs = dict([(k, map_value(v)) for k, v in kwargs.iteritems()])
return fn(*args, **kwargs)
return wrapped
R. Pate
June 27, 2009, June 27, 2009 04:13, permalink
I'm seeing the @ doubled, it's not there in the source, must be caused by the code parser/highlighter.
import functools
def lower_if_string(x):
if isinstance(x, basestring):
x = x.lower()
return x
def slug_to_lower(fn):
"""Decorator to lowercase string arguments to a function.
"""
@functools.wraps(fn)
def wrapped(*args, **kwargs):
args = map(lower_if_string, args)
kwargs = dict((k, lower_if_string(v)) for k, v in kwargs.iteritems())
return fn(*args, **kwargs)
return wrapped
This was used to convert MixedCase slugs to lowercase slugs for a django view.