
?]Mc           @   s\   d  Z  d d k l Z d d k l Z d Z d e f d     YZ d e f d     YZ d	 S(
   s-   A `safe' dictionary for string interpolation.i(   t
   StringType(   t   UserDicts   , t   SafeDictc           B   s    e  Z d  Z d   Z d   Z RS(   s   Dictionary which returns a default value for unknown keys.

    This is used in maketext so that editing templates is a bit more robust.
    c         C   sO   y |  i  | SWn9 t j
 o- t | t  o d | d Sd | Sn Xd  S(   Ns   %(s   )ss   <Missing key: %s>(   t   datat   KeyErrort
   isinstanceR    (   t   selft   key(    (    s$   /usr/lib/mailman/Mailman/SafeDict.pyt   __getitem__   s    c         C   s   | |  S(   N(    (   R   t   template(    (    s$   /usr/lib/mailman/Mailman/SafeDict.pyt   interpolate(   s    (   t   __name__t
   __module__t   __doc__R   R
   (    (    (    s$   /usr/lib/mailman/Mailman/SafeDict.pyR      s   		t   MsgSafeDictc           B   s&   e  Z d d   Z d   Z d   Z RS(   c         C   s   | |  _  t i |  |  d  S(   N(   t   _MsgSafeDict__msgR   t   __init__(   R   t   msgt   dict(    (    s$   /usr/lib/mailman/Mailman/SafeDict.pyR   .   s    	c         C   s   | i  d  o |  i i | d d  S| i  d  o? g  } |  i i | d |  } | | j o d St i |  St i |  |  Sd  S(   Nt   msg_i   s   n/at   allmsg_i   (   t
   startswithR   t   gett   get_allt
   COMMASPACEt   joinR   R   (   R   R   t   missingt   all(    (    s$   /usr/lib/mailman/Mailman/SafeDict.pyR   2   s    c         C   s   |  i  i   } xu |  i i   D]d } |  i i |  } t |  d j o | d | d | i   <q t i |  | d | i   <q W| S(   Ni   i    R   R   (	   R   t   copyR   t   keysR   t   lent   lowerR   R   (   R   t   dt   kt   vals(    (    s$   /usr/lib/mailman/Mailman/SafeDict.pyR   >   s     !N(   R   R   t   NoneR   R   R   (    (    (    s$   /usr/lib/mailman/Mailman/SafeDict.pyR   -   s   	N(   R   t   typesR    R   R   R   R   (    (    (    s$   /usr/lib/mailman/Mailman/SafeDict.pyt   <module>   s
   
