Ñò
RüLc           @   s  d  Z  d d k Z d d k Z d d k Z d d „ Z d d d „  ƒ  YZ d d d „  ƒ  YZ e d j o¯ d	 Z	 x¦ d
 d d d d d d d d g	 D] Z
 e e	 e
 ƒ Z d Ge
 Gd GHd Z d Ge i e ƒ GHe d d ƒ i e ƒ e i d ƒ d Ge d ƒ i ƒ  GHe i d ƒ q‘ Wn d S(   s¢   macros.py: Generate macro values from configuration values and provide
substitution functions.

The following macros are available:

  LCODE CCODE PKGCODE LOCALE
iÿÿÿÿNc         C   sÇ   d } x– t |  ƒ D]ˆ } y | i | ƒ \ } } Wn t j
 o
 q n X| i d ƒ d j p | i d ƒ d j o q n | | j o | i ƒ  } q q W| d j o t d | |  f ‚ n | S(   s[   Look up key in given file ("key value" lines). Throw an exception if
    key was not found.t   #i    s   Key %s not found in %sN(   t   Nonet   opent   splitt
   ValueErrort   findt   stript   KeyError(   t   filet   keyt   sept   valt   lt   kt   v(    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyt	   _file_map   s     ,t   LangcodeMacrosc           B   s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   s1   /usr/share/language-selector/data/langcode2localec         C   sØ   h  |  _  h  } x´ t |  i ƒ D]£ } y% | i ƒ  } | i d ƒ \ } } Wn t j
 o
 q n X| i d ƒ d j p | i d ƒ d j o q n | | j o g  | | <n | | i | ƒ q W| | |  d <d  S(   Nt   :R    i    t   LOCALES(   t   macrosR   t   LANGCODE_TO_LOCALEt   rstripR   R   R   t   append(   t   selft   langCodet   localesR   R   R   (    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyt   __init__"   s    	 ,c         C   s   |  i  i | d ƒ S(   Nt    (   R   t   get(   R   t   item(    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyt   __getitem__2   s    c         C   s   | |  i  | <d  S(   N(   R   (   R   R   t   value(    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyt   __setitem__6   s    c         C   s   |  i  i | ƒ S(   N(   R   t   __contains__(   R   R   (    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyR!   9   s    (   t   __name__t
   __module__R   R   R   R    R!   (    (    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyR      s
   			t   LangpackMacrosc           B   sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s+  t  i i | d d ƒ |  _ h  |  _ d |  d <d |  d <d |  d <d |  d <d |  d <d |  d	 <| d
 j p | d j o
 d } n d | j o | i d ƒ \ } |  d <n d | j o | i d ƒ d } n d | j o! | i d ƒ \ |  d <|  d <n | |  d <t |  d ƒ d j o d | |  d f |  d <n | |  d <t |  d ƒ d j o„ t |  d ƒ d j o  d |  d |  d f |  d	 <n d |  d |  d	 <t |  d ƒ d j o  d |  d	 |  d f |  d	 <qân y! t |  i |  d d ƒ |  d <Wn! t j
 o |  d |  d <n Xd S(   s7  Initialize values of macros.

        This uses information from maps/, config/, some hardcoded aggregate
        strings (such as package names), and some external input:
        
        - locale: Standard locale representation (e. g. pt_BR.utf8)
                  Format is: ll[_CC][.utf8][@variant]
        t   datat   locale2langpackR   t   LCODEt   CCODEt   VARIANTt   LOCALEt   PKGCODEt	   SYSLOCALEt   Ct   POSIXt   en_USt   @t   .i    t   _s   %s@%ss
   %s_%s.utf8s   %s.utf8R   N(	   t   ost   patht   joint   LOCALE_TO_LANGPACKR   R   t   lenR   R   (   R   t   datadirt   locale(    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyR   =   s<    
	






!

 $!c         C   s   |  i  i | d ƒ S(   NR   (   R   R   (   R   R   (    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyR   m   s    c         C   s   | |  i  | <d  S(   N(   R   (   R   R   R   (    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyR    q   s    c         C   s   |  i  i | ƒ S(   N(   R   R!   (   R   R   (    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyR!   t   s    c         C   sq   t  i d ƒ } x[ | i | ƒ } | oA | | i d ƒ d  |  | i d ƒ | | i d ƒ d } q Pq | S(   s&   Substitute all macros in given string.s
   %([A-Z]+)%i   (   t   ret   compilet   searcht   startt   groupt   end(   R   t   st   re_macrot   m(    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyt   subst_stringw   s    Ac         C   s5   t  | ƒ i ƒ  } t  | d ƒ i |  i | ƒ ƒ d S(   s$   Substitute all macros in given file.t   wN(   R   t   readt   writeRC   (   R   R   R@   (    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyt
   subst_file„   s    c         C   sW   xP t  i | ƒ D]? \ } } } x- | D]% } |  i t  i i | | | ƒ ƒ q& Wq Wd S(   s.   Substitute all macros in given directory tree.N(   R3   t   walkRG   R4   R5   (   R   t   rootR4   t   dirst   filest   f(    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyt
   subst_treeŠ   s
      (	   R"   R#   R   R   R    R!   RC   RG   RM   (    (    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyR$   <   s   	0					t   __main__s   /usr/share/language-selectort   det   de_DEs   de_DE.UTF-8s   de_DE.UTF-8@euros   fr_BE@latins   zh_CN.UTF-8s   zh_TW.UTF-8s   zh_HK.UTF-8t   invalid_Locales   -------s   ---------------s;   "%PKGCODE%: %LCODE% %CCODE% %VARIANT% %LOCALE% %SYSLOCALE%"s   string:t   testtestRD   s   file  :(    (    (   t   __doc__R:   t   os.pathR3   R   R   R   R$   R"   R8   R9   R   t   templateRC   R   RF   RG   RE   t   unlink(    (    (    s;   /usr/lib/python2.6/dist-packages/LanguageSelector/macros.pyt   <module>   s    $U" 