55502f40dc8b7c769880b10874abc9d0

This was used to convert MixedCase slugs to lowercase slugs for a django view.

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 !

Bbcac97b68f9e9cabd25a3f0f0bdbe49

Hugh Brown

June 4, 2009, June 04, 2009 19:32, permalink

No rating. Login to rate!
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
Bbcac97b68f9e9cabd25a3f0f0bdbe49

Hugh Brown

June 4, 2009, June 04, 2009 19:34, permalink

No rating. Login to rate!
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
Bbcac97b68f9e9cabd25a3f0f0bdbe49

Hugh Brown

June 4, 2009, June 04, 2009 19:36, permalink

No rating. Login to rate!
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
64798a399a79ed8d34fa83ba0e61c1ac

ielectric.myopenid.com

June 4, 2009, June 04, 2009 23:39, permalink

No rating. Login to rate!
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
48ccd8d56bce9ebd25c1720c13e9d442

R. Pate

June 27, 2009, June 27, 2009 04:13, permalink

No rating. Login to rate!

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

Your refactoring





Format Copy from initial code

or Cancel