ó
;ü½cc           @   s\   d  Z  d d l m Z d d l m 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   sK   y |  j  | SWn5 t k
 rF t | t ƒ r: d | d Sd | Sn Xd  S(   Ns   %(s   )ss   <Missing key: %s>(   t   datat   KeyErrort
   isinstanceR    (   t   selft   key(    (    s/   /export/web/mailman/mailman/Mailman/SafeDict.pyt   __getitem__   s    c         C   s   | |  S(   N(    (   R   t   template(    (    s/   /export/web/mailman/mailman/Mailman/SafeDict.pyt   interpolate(   s    (   t   __name__t
   __module__t   __doc__R   R
   (    (    (    s/   /export/web/mailman/mailman/Mailman/SafeDict.pyR      s   		t   MsgSafeDictc           B   s&   e  Z d d  „ Z d „  Z d „  Z RS(   c         C   s   | |  _  t j |  | ƒ d  S(   N(   t   _MsgSafeDict__msgR   t   __init__(   R   t   msgt   dict(    (    s/   /export/web/mailman/mailman/Mailman/SafeDict.pyR   .   s    	c         C   s…   | j  d ƒ r& |  j j | d d ƒ S| j  d ƒ rq g  } |  j j | d | ƒ } | | k rd d St j | ƒ St j |  | ƒ 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/   /export/web/mailman/mailman/Mailman/SafeDict.pyR   2   s    c         C   s‰   |  j  j ƒ  } xs |  j j ƒ  D]b } |  j j | ƒ } t | ƒ d k rd | d | d | j ƒ  <q t j | ƒ | d | j ƒ  <q W| S(   Ni   i    R   R   (	   R   t   copyR   t   keysR   t   lent   lowerR   R   (   R   t   dt   kt   vals(    (    s/   /export/web/mailman/mailman/Mailman/SafeDict.pyR   >   s    !N(   R   R   t   NoneR   R   R   (    (    (    s/   /export/web/mailman/mailman/Mailman/SafeDict.pyR   -   s   	N(   R   t   typesR    R   R   R   R   (    (    (    s/   /export/web/mailman/mailman/Mailman/SafeDict.pyt   <module>   s
   