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 # 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 # it under the terms of the GNU General Public License as published by
@ -25,6 +25,7 @@ $Id$
""" """
_notfound = object() _notfound = object()
_undefined = object()
class Jeep(object): class Jeep(object):
@ -86,7 +87,7 @@ class Jeep(object):
def values(self): def values(self):
return list(self) return list(self)
return [self[k] for k in self] #return [self[k] for k in self]
def items(self): def items(self):
return [(k, self[k]) for k in self._sequence] return [(k, self[k]) for k in self._sequence]
@ -121,11 +122,14 @@ class Jeep(object):
for key, value in mapping.items(): for key, value in mapping.items():
self[key] = value self[key] = value
def pop(self, key=-1): def pop(self, key=-1, default=_undefined):
value = self[key]
if type(key) in (int, long): if type(key) in (int, long):
key = self._sequence[key] 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 return value
def find(self, obj): def find(self, obj):

View file

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