mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
redefined normcase()
This commit is contained in:
parent
3b8e1604e8
commit
fda5c1a807
1 changed files with 5 additions and 14 deletions
|
@ -7,28 +7,18 @@ import string
|
||||||
|
|
||||||
# Normalize the case of a pathname.
|
# Normalize the case of a pathname.
|
||||||
# On MS-DOS it maps the pathname to lowercase, turns slashes into
|
# On MS-DOS it maps the pathname to lowercase, turns slashes into
|
||||||
# backslashes and maps invalid consecutive characters to a single '_'.
|
# backslashes.
|
||||||
# Other normalizations (such as optimizing '../' away) are not allowed
|
# Other normalizations (such as optimizing '../' away) are not allowed
|
||||||
# (this is done by normpath).
|
# (this is done by normpath).
|
||||||
#
|
# Previously, this version mapped invalid consecutive characters to a
|
||||||
# Amrit: Things that can be valid regular expressions cannot be normalized
|
# single '_', but this has been removed. This functionality should
|
||||||
# away. (which is pretty much all special characters)
|
# possibly be added as a new function.
|
||||||
#
|
|
||||||
# I am assuming that at least these chars may be used:
|
|
||||||
# [, ], |, *, +, ?
|
|
||||||
|
|
||||||
mapchar = '_'
|
|
||||||
|
|
||||||
def normcase(s):
|
def normcase(s):
|
||||||
res, s = splitdrive(s)
|
res, s = splitdrive(s)
|
||||||
for c in s:
|
for c in s:
|
||||||
if c in '/\\':
|
if c in '/\\':
|
||||||
res = res + os.sep
|
res = res + os.sep
|
||||||
elif c == '.' and res[-1:] == os.sep:
|
|
||||||
res = res + mapchar + c
|
|
||||||
elif ord(c) < 32 or c in ' ",:;<=>':
|
|
||||||
if res[-1:] != mapchar:
|
|
||||||
res = res + mapchar
|
|
||||||
else:
|
else:
|
||||||
res = res + c
|
res = res + c
|
||||||
return string.lower(res)
|
return string.lower(res)
|
||||||
|
@ -59,6 +49,7 @@ def join(a, b):
|
||||||
# Split a path in a drive specification (a drive letter followed by a
|
# Split a path in a drive specification (a drive letter followed by a
|
||||||
# colon) and the path specification.
|
# colon) and the path specification.
|
||||||
# It is always true that drivespec + pathspec == p
|
# It is always true that drivespec + pathspec == p
|
||||||
|
|
||||||
def splitdrive(p):
|
def splitdrive(p):
|
||||||
if p[1:2] == ':':
|
if p[1:2] == ':':
|
||||||
return p[0:2], p[2:]
|
return p[0:2], p[2:]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue