contrib/casesmash.py
author Olav Reinert <seroton10@gmail.com>
Wed, 11 Jan 2012 18:08:25 +0100
changeset 15861 ee8f5e4ce7b8
parent 14730 f5765353d430
child 19322 ff1586a3adc5
permissions -rw-r--r--
minirst: simplify and standardize field list formatting The default width of field lists is changed from 12 to 14 to align minirst with the rst2html tool. Shrinking the width of the left column to fit the content is removed, to keep formatting simple and uniform.

import sys, os, __builtin__
from mercurial import util

def lowerwrap(scope, funcname):
    f = getattr(scope, funcname)
    def wrap(fname, *args, **kwargs):
        d, base = os.path.split(fname)
        try:
            files = os.listdir(d or '.')
        except OSError, inst:
            files = []
        if base in files:
            return f(fname, *args, **kwargs)
        for fn in files:
            if fn.lower() == base.lower():
                return f(os.path.join(d, fn), *args, **kwargs)
        return f(fname, *args, **kwargs)
    scope.__dict__[funcname] = wrap

def normcase(path):
    return path.lower()

os.path.normcase = normcase

for f in 'file open'.split():
    lowerwrap(__builtin__, f)

for f in "chmod chown open lstat stat remove unlink".split():
    lowerwrap(os, f)

for f in "exists lexists".split():
    lowerwrap(os.path, f)

lowerwrap(util, 'posixfile')