diff options
| author | Barry Warsaw | 2008-02-27 01:26:18 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2008-02-27 01:26:18 -0500 |
| commit | a1c73f6c305c7f74987d99855ba59d8fa823c253 (patch) | |
| tree | 65696889450862357c9e05c8e9a589f1bdc074ac /Mailman/SafeDict.py | |
| parent | 3f31f8cce369529d177cfb5a7c66346ec1e12130 (diff) | |
| download | mailman-a1c73f6c305c7f74987d99855ba59d8fa823c253.tar.gz mailman-a1c73f6c305c7f74987d99855ba59d8fa823c253.tar.zst mailman-a1c73f6c305c7f74987d99855ba59d8fa823c253.zip | |
Diffstat (limited to 'Mailman/SafeDict.py')
| -rw-r--r-- | Mailman/SafeDict.py | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/Mailman/SafeDict.py b/Mailman/SafeDict.py deleted file mode 100644 index 56525fefa..000000000 --- a/Mailman/SafeDict.py +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright (C) 1998-2008 by the Free Software Foundation, Inc. -# -# 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 the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -# USA. - -from Mailman.configuration import config - -"""A `safe' dictionary for string interpolation.""" - -COMMASPACE = ', ' - -# XXX This module should go away. - - - -class SafeDict(dict): - """Dictionary which returns a default value for unknown keys. - - This is used in maketext so that editing templates is a bit more robust. - """ - def __init__(self, d='', charset=None, lang=None): - super(SafeDict, self).__init__(d) - if charset: - self.cset = charset - elif lang: - self.cset = config.languages.get_charset(lang) - else: - self.cset = 'us-ascii' - - def __getitem__(self, key): - try: - return super(SafeDict, self).__getitem__(key) - except KeyError: - if isinstance(key, basestring): - return '%('+key+')s' - else: - return '<Missing key: %s>' % `key` - - def interpolate(self, template): - for k, v in self.items(): - if isinstance(v, str): - self.__setitem__(k, unicode(v, self.cset)) - return template % self - - - -class MsgSafeDict(SafeDict): - def __init__(self, msg, d=None): - self.__msg = msg - if d is None: - d = {} - super(MsgSafeDict, self).__init__(d) - - def __getitem__(self, key): - if key.startswith('msg_'): - return self.__msg.get(key[4:], 'n/a') - elif key.startswith('allmsg_'): - missing = [] - all = self.__msg.get_all(key[7:], missing) - if all is missing: - return 'n/a' - return COMMASPACE.join(all) - else: - return super(MsgSafeDict, self).__getitem__(key) - - def copy(self): - d = super(MsgSafeDict, self).copy() - for k in self.__msg.keys(): - vals = self.__msg.get_all(k) - if len(vals) == 1: - d['msg_'+k.lower()] = vals[0] - else: - d['allmsg_'+k.lower()] = COMMASPACE.join(vals) - return d |
