mirror of https://github.com/python/cpython
revert semantics of commonprefix to work character-by-character
This commit is contained in:
parent
6424524fbe
commit
623583165e
|
@ -3,7 +3,6 @@
|
||||||
import os
|
import os
|
||||||
import stat
|
import stat
|
||||||
import string
|
import string
|
||||||
import re
|
|
||||||
|
|
||||||
|
|
||||||
def normcase(s):
|
def normcase(s):
|
||||||
|
@ -103,23 +102,18 @@ def dirname(p):
|
||||||
return split(p)[0]
|
return split(p)[0]
|
||||||
|
|
||||||
|
|
||||||
# Return the longest prefix of all list elements.
|
|
||||||
|
|
||||||
def commonprefix(m):
|
def commonprefix(m):
|
||||||
"Given a list of pathnames, returns the longest common leading component"
|
"""Return the longest prefix of all list elements."""
|
||||||
|
|
||||||
if not m: return ''
|
if not m: return ''
|
||||||
n = map(string.lower, m)
|
prefix = m[0]
|
||||||
for i in range(len(n)):
|
for item in m:
|
||||||
n[i] = re.split(r"[/\\]", n[i])
|
|
||||||
|
|
||||||
prefix = n[0]
|
|
||||||
for item in n:
|
|
||||||
for i in range(len(prefix)):
|
for i in range(len(prefix)):
|
||||||
if prefix[:i+1] <> item[:i+1]:
|
if prefix[:i+1] <> item[:i+1]:
|
||||||
prefix = prefix[:i]
|
prefix = prefix[:i]
|
||||||
if i == 0: return ''
|
if i == 0: return ''
|
||||||
break
|
break
|
||||||
return "\\".join(prefix)
|
return prefix
|
||||||
|
|
||||||
|
|
||||||
# Get size, mtime, atime of files.
|
# Get size, mtime, atime of files.
|
||||||
|
|
|
@ -8,7 +8,6 @@ module as os.path.
|
||||||
import os
|
import os
|
||||||
import stat
|
import stat
|
||||||
import string
|
import string
|
||||||
import re
|
|
||||||
|
|
||||||
|
|
||||||
# Normalize the case of a pathname and map slashes to backslashes.
|
# Normalize the case of a pathname and map slashes to backslashes.
|
||||||
|
@ -159,18 +158,14 @@ def dirname(p):
|
||||||
def commonprefix(m):
|
def commonprefix(m):
|
||||||
"Given a list of pathnames, returns the longest common leading component"
|
"Given a list of pathnames, returns the longest common leading component"
|
||||||
if not m: return ''
|
if not m: return ''
|
||||||
n = map(string.lower, m)
|
prefix = m[0]
|
||||||
for i in range(len(n)):
|
for item in m:
|
||||||
n[i] = re.split(r"[/\\]", n[i])
|
|
||||||
|
|
||||||
prefix = n[0]
|
|
||||||
for item in n:
|
|
||||||
for i in range(len(prefix)):
|
for i in range(len(prefix)):
|
||||||
if prefix[:i+1] <> item[:i+1]:
|
if prefix[:i+1] <> item[:i+1]:
|
||||||
prefix = prefix[:i]
|
prefix = prefix[:i]
|
||||||
if i == 0: return ''
|
if i == 0: return ''
|
||||||
break
|
break
|
||||||
return "\\".join(prefix)
|
return prefix
|
||||||
|
|
||||||
|
|
||||||
# Get size, mtime, atime of files.
|
# Get size, mtime, atime of files.
|
||||||
|
|
|
@ -118,18 +118,14 @@ def dirname(p):
|
||||||
def commonprefix(m):
|
def commonprefix(m):
|
||||||
"Given a list of pathnames, returns the longest common leading component"
|
"Given a list of pathnames, returns the longest common leading component"
|
||||||
if not m: return ''
|
if not m: return ''
|
||||||
n = m[:]
|
prefix = m[0]
|
||||||
for i in range(len(n)):
|
for item in m:
|
||||||
n[i] = n[i].split("/")
|
|
||||||
|
|
||||||
prefix = n[0]
|
|
||||||
for item in n:
|
|
||||||
for i in range(len(prefix)):
|
for i in range(len(prefix)):
|
||||||
if prefix[:i+1] <> item[:i+1]:
|
if prefix[:i+1] <> item[:i+1]:
|
||||||
prefix = prefix[:i]
|
prefix = prefix[:i]
|
||||||
if i == 0: return ''
|
if i == 0: return ''
|
||||||
break
|
break
|
||||||
return "/".join(prefix)
|
return prefix
|
||||||
|
|
||||||
|
|
||||||
# Get size, mtime, atime of files.
|
# Get size, mtime, atime of files.
|
||||||
|
|
Loading…
Reference in New Issue