add 'default' argument to Jeep.pop()

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3887 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2010-06-06 13:19:25 +00:00
parent e4a5c8e8d9
commit 4731481f48
2 changed files with 14 additions and 5 deletions

View file

@ -1,5 +1,5 @@
#
# Copyright (c) 2007 Helmut Merz helmutm@cy55.de
# Copyright (c) 2010 Helmut Merz helmutm@cy55.de
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -25,6 +25,7 @@ $Id$
"""
_notfound = object()
_undefined = object()
class Jeep(object):
@ -86,7 +87,7 @@ class Jeep(object):
def values(self):
return list(self)
return [self[k] for k in self]
#return [self[k] for k in self]
def items(self):
return [(k, self[k]) for k in self._sequence]
@ -121,11 +122,14 @@ class Jeep(object):
for key, value in mapping.items():
self[key] = value
def pop(self, key=-1):
value = self[key]
def pop(self, key=-1, default=_undefined):
if type(key) in (int, long):
key = self._sequence[key]
delattr(self, key)
if default is _undefined:
value = self[key]
else:
value = self.get(key, default)
self.remove(key)
return value
def find(self, obj):

View file

@ -113,6 +113,11 @@ More Methods and Operators
'third value'
>>> len(jeep)
2
>>> jeep.pop('blubb')
Traceback (most recent call last):
...
KeyError: 'blubb'
>>> jeep.pop('blubb', None)
>>> 'third' in jeep
False