
    k!f                     |   d Z ddlmZ ddlZddlZddZ G d d      Z G d d      Zed	k(  rd
Z	dD ]  Z
 ee	e
      Z ede
d       dZ edej                  e              edd      j!                  e       ej#                  d        ed ed      j%                                 ej&                  d        yy)zmacros.py: Generate macro values from configuration values and provide
substitution functions.

The following macros are available:

  LCODE CCODE PKGCODE LOCALE
    )print_functionNc                 B   d}t        | d      }|D ]V  }	 |j                  |      \  }}|j                  d      dk\  s|j                  d      dk\  rA||k(  sG|j	                         }X |j                          |dk(  rt        d|d|       |S # t        $ r Y w xY w)z[Look up key in given file ("key value" lines). Throw an exception if
    key was not found.Nr#r   zKey z not found in )opensplit
ValueErrorfindstripcloseKeyError)filekeysepvalflkvs           9/usr/lib/python3/dist-packages/LanguageSelector/macros.py	_file_mapr      s     CT3A 		WWS\FQ 66#;!qvvc{a/8'')C	 GGI
d{3=>>J  		s   B	BBc                   (    e Zd ZdZd Zd Zd Zd Zy)LangcodeMacrosz1/usr/share/language-selector/data/langcode2localec                 N   i | _         i }t        | j                        D ]m  }	 |j                         }|j	                  d      \  }}|j                  d      dk\  s|j                  d      dk\  rQ||vrg ||<   ||   j                  |       o ||   | d<   y # t
        $ r Y w xY w)N:r   r   LOCALES)macrosr   LANGCODE_TO_LOCALErstripr   r	   r
   append)selflangCodelocalesr   r   r   s         r   __init__zLangcodeMacros.__init__'   s    d--. 
	!AHHJA vvc{a166#;!#3<
AJa 
	! "(+Y  s   $B	B$#B$c                 :    | j                   j                  |d      S N r   getr!   items     r   __getitem__zLangcodeMacros.__getitem__7       {{tR((    c                 "    || j                   |<   y Nr   r!   r+   values      r   __setitem__zLangcodeMacros.__setitem__;       !Dr.   c                 8    | j                   j                  |      S r0   r   __contains__r*   s     r   r8   zLangcodeMacros.__contains__>       {{''--r.   N)__name__
__module____qualname__r   r$   r,   r4   r8    r.   r   r   r   #   s    L, )".r.   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	LangpackMacrosc                    t         j                  j                  |dd      | _        i | _        d| d<   d| d<   d| d<   d| d<   d| d<   d| d	<   |d
k(  s|dk(  rd}d|v r|j                  d      \  }| d<   d|v r|j                  d      d   }d|v r|j                  d      \  | d<   | d<   n|| d<   t        | d         dkD  r|d| d   | d<   n|| d<   t        | d         dkD  rOt        | d         dkD  r| d   d| d   d| d	<   nd| d   z  | d	<   t        | d         dkD  r| d	   d| d   | d	<   	 t        | j                  | d   d      | d<   y# t        $ r | d   | d<   Y yw xY w)a9  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.UTF-8)
                  Format is: ll[_CC][.UTF-8][@variant]
        datalocale2langpackr'   LCODECCODEVARIANTLOCALEPKGCODE	SYSLOCALECPOSIXen_US@.r   _z.UTF-8z%s.UTF-8r   N)	ospathjoinLOCALE_TO_LANGPACKr   r   lenr   r   )r!   datadirlocales      r   r$   zLangpackMacros.__init__B   s    #%'',,w@Q"RWWYXY[S=Fg-F&=(.S(9%VT)_&=\\#&q)F&=-3\\#->*T']DM"DMtI!#(.Y@DN#DNtG}!4=!A%59']DM$R[!$.g$>[!4	?#a'/3K/@$y/$R[!	,'(?(?hQTUDO 	,"7mDO	,s   4E E&%E&c                 :    | j                   j                  |d      S r&   r(   r*   s     r   r,   zLangpackMacros.__getitem__r   r-   r.   c                 "    || j                   |<   y r0   r1   r2   s      r   r4   zLangpackMacros.__setitem__v   r5   r.   c                 8    | j                   j                  |      S r0   r7   r*   s     r   r8   zLangpackMacros.__contains__y   r9   r.   c                     t        j                  d      }	 |j                  |      }|rE|d|j                  d      dz
   | |j	                  d         z   ||j                  d      dz   d z   }n	 |S \)z&Substitute all macros in given string.z
%([A-Z]+)%   N)recompilesearchstartgroupend)r!   sre_macroms       r   subst_stringzLangpackMacros.subst_string|   st     ::l+"Amqwwqz!|$tAGGAJ'77!AEE!HQJK.H r.   c                     t        |      j                         }t        |d      j                  | j                  |             y)z$Substitute all macros in given file.wN)r   readwriterd   )r!   r   ra   s      r   
subst_filezLangpackMacros.subst_file   s3     JOOT3d//23r.   c           	          t        j                  |      D ]=  \  }}}|D ]2  }| j                  t         j                  j	                  |||             4 ? y)z.Substitute all macros in given directory tree.N)rO   walkri   rP   rQ   )r!   rootrP   dirsfilesr   s         r   
subst_treezLangpackMacros.subst_tree   sN     "$ 	=D$ =T4 ;<=	=r.   N)
r:   r;   r<   r$   r,   r4   r8   rd   ri   ro   r=   r.   r   r?   r?   A   s&    .,`)".4=r.   r?   __main__z/usr/share/language-selector)	dede_DEzde_DE.UTF-8zde_DE.UTF-8@eurozfr_BE@latinzzh_CN.UTF-8zzh_TW.UTF-8zzh_HK.UTF-8invalid_Localez-------z---------------z;"%PKGCODE%: %LCODE% %CCODE% %VARIANT% %LOCALE% %SYSLOCALE%"zstring:testtestrf   zfile  :r0   )__doc__
__future__r   rO   r[   r   r   r?   r:   rT   rU   r   printtemplaterd   r   rh   ri   rg   unlinkr=   r.   r   <module>rz      s    & 	 	*. .<S= S=j z,G S 	7F+i!23Pi12Z##H-	Z ij)..01		*	 r.   