mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-23 11:09:23 +01:00
Added function commaAndify to turn a list of strings into a proper English foo, bar, and baz string.
This commit is contained in:
parent
15ba96b4eb
commit
01eb6934ef
15
src/utils.py
15
src/utils.py
@ -165,7 +165,7 @@ def timeElapsed(elapsed, leadingZeroes=False, years=True, weeks=True,
|
|||||||
return ret[0]
|
return ret[0]
|
||||||
else:
|
else:
|
||||||
return ' and '.join([', '.join(ret[:-1]), ret[-1]])
|
return ' and '.join([', '.join(ret[:-1]), ret[-1]])
|
||||||
|
|
||||||
def distance(s, t):
|
def distance(s, t):
|
||||||
"""Returns the levenshtein edit distance between two strings."""
|
"""Returns the levenshtein edit distance between two strings."""
|
||||||
n = len(s)
|
n = len(s)
|
||||||
@ -230,7 +230,7 @@ def perlReToPythonRe(s):
|
|||||||
except AttributeError:
|
except AttributeError:
|
||||||
raise ValueError, 'Invalid flag: %s' % c
|
raise ValueError, 'Invalid flag: %s' % c
|
||||||
return re.compile(regexp, flag)
|
return re.compile(regexp, flag)
|
||||||
|
|
||||||
def perlReToReplacer(s):
|
def perlReToReplacer(s):
|
||||||
"""Converts a string representation of a Perl regular expression (i.e.,
|
"""Converts a string representation of a Perl regular expression (i.e.,
|
||||||
s/foo/bar/g or s/foo/bar/i) to a Python function doing the equivalent
|
s/foo/bar/g or s/foo/bar/i) to a Python function doing the equivalent
|
||||||
@ -259,4 +259,15 @@ def findBinaryInPath(s):
|
|||||||
break
|
break
|
||||||
return cmdLine
|
return cmdLine
|
||||||
|
|
||||||
|
def commaAndify(L):
|
||||||
|
if len(L) == 0:
|
||||||
|
return ''
|
||||||
|
elif len(L) == 1:
|
||||||
|
return L[0]
|
||||||
|
elif len(L) == 2:
|
||||||
|
return '%s and %s' % (L[0], L[1])
|
||||||
|
else:
|
||||||
|
L[-1] = 'and %s' % L[-1]
|
||||||
|
return ', '.join(L)
|
||||||
|
|
||||||
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
|
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
|
||||||
|
@ -104,7 +104,7 @@ class UtilsTest(unittest.TestCase):
|
|||||||
r = utils.dqrepr(s)
|
r = utils.dqrepr(s)
|
||||||
self.assertEqual(s, eval(r), s)
|
self.assertEqual(s, eval(r), s)
|
||||||
self.failUnless(r[0] == '"' and r[-1] == '"', s)
|
self.failUnless(r[0] == '"' and r[-1] == '"', s)
|
||||||
|
|
||||||
def testPerlReToPythonRe(self):
|
def testPerlReToPythonRe(self):
|
||||||
r = utils.perlReToPythonRe('m/foo/')
|
r = utils.perlReToPythonRe('m/foo/')
|
||||||
self.failUnless(r.search('foo'))
|
self.failUnless(r.search('foo'))
|
||||||
@ -126,10 +126,19 @@ class UtilsTest(unittest.TestCase):
|
|||||||
self.assertEqual(f('foobarbaz'), 'foorz')
|
self.assertEqual(f('foobarbaz'), 'foorz')
|
||||||
f = utils.perlReToReplacer('s/ba\\///g')
|
f = utils.perlReToReplacer('s/ba\\///g')
|
||||||
self.assertEqual(f('fooba/rba/z'), 'foorz')
|
self.assertEqual(f('fooba/rba/z'), 'foorz')
|
||||||
|
|
||||||
def testFindBinaryInPath(self):
|
def testFindBinaryInPath(self):
|
||||||
self.assertEqual(None, utils.findBinaryInPath('asdfhjklasdfhjkl'))
|
if os.name == 'posix':
|
||||||
self.assertEqual('/bin/sh', utils.findBinaryInPath('sh'))
|
self.assertEqual(None, utils.findBinaryInPath('asdfhjklasdfhjkl'))
|
||||||
|
self.assertEqual('/bin/sh', utils.findBinaryInPath('sh'))
|
||||||
|
|
||||||
|
def testCommaAndify(self):
|
||||||
|
L = ['foo']
|
||||||
|
self.assertEqual(utils.commaAndify(L), 'foo')
|
||||||
|
L.append('bar')
|
||||||
|
self.assertEqual(utils.commaAndify(L), 'foo and bar')
|
||||||
|
L.append('baz')
|
||||||
|
self.assertEqual(utils.commaAndify(L), 'foo, bar, and baz')
|
||||||
|
|
||||||
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
|
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user