You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.1 KiB
48 lines
1.1 KiB
# Copyright (c) 2002-2010 Zooko Wilcox-O'Hearn
|
|
# This file is part of pyutil; see README.rst for licensing terms.
|
|
|
|
def commonprefix(l):
|
|
cp = []
|
|
for i in range(min(map(len, l))):
|
|
c = l[0][i]
|
|
for s in l[1:]:
|
|
if s[i] != c:
|
|
return ''.join(cp)
|
|
cp.append(c)
|
|
return ''.join(cp)
|
|
|
|
def commonsuffix(l):
|
|
cp = []
|
|
for i in range(min(map(len, l))):
|
|
c = l[0][-i-1]
|
|
for s in l[1:]:
|
|
if s[-i-1] != c:
|
|
cp.reverse()
|
|
return ''.join(cp)
|
|
cp.append(c)
|
|
cp.reverse()
|
|
return ''.join(cp)
|
|
|
|
def split_on_newlines(s):
|
|
"""
|
|
Splits s on all of the three newline sequences: "\r\n", "\r", or "\n".
|
|
"""
|
|
res = []
|
|
for x in s.split('\r\n'):
|
|
for y in x.split('\r'):
|
|
res.extend(y.split('\n'))
|
|
return res
|
|
|
|
def pop_trailing_newlines(s):
|
|
"""
|
|
@return a copy of s minus any trailing "\n"'s or "\r"'s
|
|
"""
|
|
i = len(s)-1
|
|
if i < 0:
|
|
return ''
|
|
while s[i] in ('\n', '\r',):
|
|
i = i - 1
|
|
if i < 0:
|
|
return ''
|
|
return s[:i+1]
|
|
|
|
|