§
    p÷cÖ(  ã                   ó<   — d dl Z d dlZddlmZ  G d„ d¦  «        ZdS )é    Né   )Úutilsc                   óT   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ ZdS )ÚRstCodeGeneratorz3Generates documentation in reStructuredText format.c                 ó<   — || _         |                      ¦   «          d S )N)ÚifacesÚ_generate_expand_dicts)Úselfr   s     ú*/usr/share/glib-2.0/codegen/codegen_rst.pyÚ__init__zRstCodeGenerator.__init__   s!   € ØˆŒØ×#Ò#Ñ%Ô%Ð%Ð%Ð%ó    c                 óö  — g }|                      d¦  «        D ]Í}|                     ¦   «         }|dk    r|                     d¦  «         Œ2| j        D ]#}|                     || j        |         ¦  «        }Œ$| j        D ]#}|                     || j        |         ¦  «        }Œ$|r.t          j	        dd„ |¦  «        }t          j	        dd„ |¦  «        }|                     |¦  «         ŒÎd 
                    |¦  «        S )z)Expands parameters and constant literals.ú
Ú z@[a-zA-Z0-9_]*c                 óH   — d|                       d¦  «        dd …         z   dz   S ©Nz``r   r   ©Úgroup©Úms    r   ú<lambda>z*RstCodeGenerator._expand.<locals>.<lambda>%   ó"   € ˜d Q§W¢W¨Q¡Z¤Z°°°¤^Ñ3°dÑ:€ r   z%[a-zA-Z0-9_]*c                 óH   — d|                       d¦  «        dd …         z   dz   S r   r   r   s    r   r   z*RstCodeGenerator._expand.<locals>.<lambda>+   r   r   )ÚsplitÚstripÚappendÚ_expand_member_dict_keysÚreplaceÚ_expand_member_dictÚ_expand_iface_dict_keysÚ_expand_iface_dictÚreÚsubÚjoin)r
   ÚsÚexpandParamsAndConstantsÚresÚlineÚkeys         r   Ú_expandzRstCodeGenerator._expand   s  € àˆØ—G’G˜D‘M”Mð 	ð 	ˆDØ—:’:‘<”<ˆDØ�rŠzˆzØ—
’
˜2‘”�ØØÔ4ð Hð H�Ø—|’| C¨Ô)AÀ#Ô)FÑGÔG��ØÔ3ð Gð G�Ø—|’| C¨Ô)@ÀÔ)EÑFÔF��Ø'ð å”vØ$Ø:Ð:Øñô �õ ”vØ$Ø:Ð:Øñô �ð
 �JŠJ�tÑÔÐÐØ�yŠy˜‰~Œ~Ðr   c                 ó~  — i | _         i | _        | j        D ]Ì}d|j        › �}d|j        › d�}|| j        |<   |j        D ]1}|j        ›d|j        ›d�}d|j        › d|j        › d�}|| j         |<   Œ2|j        D ]1}d|j        ›d|j        ›�}d|j        › d|j        › d�}|| j         |<   Œ2|j        D ]1}d|j        ›d|j        ›�}d|j        › d|j        › d�}|| j         |<   Œ2ŒÍt          | j                              ¦   «         d¬	¦  «        | _	        t          | j                             ¦   «         d¬	¦  «        | _
        d
S )z9Generates the dictionaries used to expand gtk-doc sigils.ú#ú`z`_ú.z()ú::ú:T)ÚreverseN)r   r!   r   ÚnameÚmethodsÚsignalsÚ
propertiesÚsortedÚkeysr   r    )r
   Úir)   Úvaluer   r%   Úps          r   r	   z'RstCodeGenerator._generate_expand_dicts1   sª  € à#%ˆÔ Ø"$ˆÔØ”ð 	6ð 	6ˆAØ�a”f�,�,ˆCØ"˜œ�N�N�NˆEØ+0ˆDÔ# CÑ(à”Yð 6ð 6�Ø#$¤6 6 6¨1¬6¨6¨6Ð2�Ø/˜AœFÐ/Ð/ Q¤VÐ/Ð/Ð/�Ø05�Ô(¨Ñ-Ð-à”Yð 6ð 6��Ø#$¤6 6 6¨1¬6¨6Ð2�Ø0˜AœFÐ0Ð0 a¤fÐ0Ð0Ð0�Ø05�Ô(¨Ñ-Ð-à”\ð 6ð 6��Ø"#¤& & &¨!¬&¨&Ð1�Ø/˜AœFÐ/Ð/ Q¤VÐ/Ð/Ð/�Ø05�Ô(¨Ñ-Ð-ð6õ )/ØÔ$×)Ò)Ñ+Ô+°Tð)
ñ )
ô )
ˆÔ%õ (.ØÔ#×(Ò(Ñ*Ô*°Dð(
ñ (
ô (
ˆÔ$Ð$Ð$r   c                 óh  — t          |j        ¦  «        }d|j        › d�dd|z  |j        d|z  dddddd|j        › d�d|j                             ¦   «         d|                      |j        d¦  «        dg}|j        r|d	|j        › d
�dgz  }|j        r|g d¢z  }|dgz  }d                     |¦  «        S )z2Generates the header and preamble of the document.z.. _r0   r   ú=z-----------ÚDescriptionz Description:TzInterface available since: r.   )ú.. warning::r   z    This interface is deprecated.r   r   r   )	Úlenr2   Údoc_string_briefr   r*   Ú
doc_stringÚsinceÚ
deprecatedr$   )r
   ÚifaceÚ
header_lenr'   s       r   Ú_generate_headerz!RstCodeGenerator._generate_headerR   sý   € å˜œ‘_”_ˆ
à �5”:Ð Ð Ð ØØ�*ÑØŒJØ�*ÑØØØØØØ,�5”:Ð,Ð,Ð,ØØÔ"×(Ò(Ñ*Ô*ØØ�LŠL˜Ô)¨4Ñ0Ô0Øð!
ˆð$ Œ;ð 	ØØ<¨e¬kÐ<Ð<Ð<Øðñ ˆCð Ôð 	Øð ð ð ñ ˆCð 	�ˆt‰ˆØ�yŠy˜‰~Œ~Ðr   c           	      óŒ   — dt          |¦  «        z  |dt          |¦  «        z  dd|› d|› d�ddg}d                     |¦  «        S )z)Generates a section with the given title.ú-r   z.. ú r0   r   )r?   r$   )r
   Útitler2   r'   s       r   Ú_generate_sectionz"RstCodeGenerator._generate_sectionw   s[   € ð •#�e‘*”*ÑØØ•#�e‘*”*ÑØØ!�$Ð!Ð!˜Ð!Ð!Ð!ØØð
ˆð �yŠy˜‰~Œ~Ðr   c                 óŒ  — g }|j         D ]¦}|j        › d|j        › �}|j        r
|j        rd}n|j        rd}nd}||dt	          |¦  «        z  dddd|j        › d	|› d	|j        › �dd|                      |j        d
¦  «        dg
z  }|j        r|d|j        › d�dgz  }|j	        r|g d¢z  }|dgz  }Œ§d 
                    |¦  «        S )z!Generates the properties section.r0   Ú	readwriteÚwritableÚreadableú^r   r/   ú    rI   TzProperty available since: r.   )r>   r   z   This property is deprecated.r   r   r   )r5   r2   rO   rN   r?   Ú	signaturer*   rA   rB   rC   r$   )r
   rD   r'   r:   rJ   Úaccesss         r   Ú_generate_propertiesz%RstCodeGenerator._generate_properties„   s6  € àˆØÔ!ð !	ð !	ˆAØ”zÐ,Ð, A¤FÐ,Ð,ˆEØŒzð $˜aœjð $Ø$��Ø”ð $Ø#��à#�ØØØ•c˜%‘j”jÑ ØØØØ6�q”vÐ6Ð6 Ð6Ð6¨¬Ð6Ð6ØØØ—’˜Qœ\¨4Ñ0Ô0Øðñ ˆCð Œwð ØØ;°´Ð;Ð;Ð;Øðñ �ð Œ|ð Øð ð ð ñ �ð �B�4‰KˆCˆCØ�yŠy˜‰~Œ~Ðr   c                 óD  — ddg}t          |j        ¦  «        }t          |j        ¦  «        }|dk    r|dk    r|d|j        › d�gz  }n¾|d|j        › d�gz  }t	          |j        ¦  «        D ]B\  }}||dz
  k    r|dk    r|d|j        › d	|j        › �gz  }Œ+|d|j        › d	|j        › d
�gz  }ŒCt	          |j        ¦  «        D ]<\  }}||dz
  k    r|d|j        › d	|j        › �gz  }Œ%|d|j        › d	|j        › d
�gz  }Œ=|ddgz  }|dgz  }d                     |¦  «        S )z/Generates the method signature as a code block.r/   r   r   rQ   ú ()ú (r   z	      IN rI   ú,z
      OUT ú    )r   )r?   Úin_argsÚout_argsr2   Ú	enumeraterR   r$   )r
   Úmethodr'   Ú	n_in_argsÚ
n_out_argsÚidxÚargs          r   Ú_generate_method_signaturez+RstCodeGenerator._generate_method_signature«   sÆ  € ð Øð
ˆõ ˜œÑ'Ô'ˆ	Ý˜œÑ)Ô)ˆ
Ø˜Š>ˆ>˜j¨Ašo˜oØØ'�v”{Ð'Ð'Ð'ðñ ˆCˆCð Ø&�v”{Ð&Ð&Ð&ðñ ˆCõ & f¤nÑ5Ô5ð ð ‘��SØ˜) a™-Ò'Ð'¨J¸!ªO¨OØØ> C¤HÐ>Ð>¨s¬}Ð>Ð>ðñ �C�Cð Ø? C¤HÐ?Ð?¨s¬}Ð?Ð?Ð?ðñ �C�Cõ & f¤oÑ6Ô6ð ð ‘��SØ˜* q™.Ò(Ð(ØØ? S¤XÐ?Ð?°´Ð?Ð?ðñ �C�Cð Ø@ S¤XÐ@Ð@°´Ð@Ð@Ð@ðñ �C�Cð ØØðñ ˆCð 	�ˆt‰ˆØ�yŠy˜‰~Œ~Ðr   c                 óÄ  — g }|j         D ]Â}|j        › d|j        › �}||dt          |¦  «        z  d|                      |¦  «        d|                      |j        d¦  «        dgz  }|j        D ].}|                      |j        d¦  «        }||j        › d|› �dgz  }Œ/|dgz  }|j        r|d|j        › d�dgz  }|j        r|g d¢z  }|dgz  }ŒÃd 	                    |¦  «        S )	zGenerates the methods section.r.   rP   r   Tú  zMethod available since: )r>   r   z   This method is deprecated.r   r   r   )
r3   r2   r?   rb   r*   rA   rZ   rB   rC   r$   )r
   rD   r'   r   rJ   ÚaÚarg_descs          r   Ú_generate_methodsz"RstCodeGenerator._generate_methodsÔ   sE  € àˆØ”ð  	ð  	ˆAØ”zÐ,Ð, A¤FÐ,Ð,ˆEØØØ•c˜%‘j”jÑ ØØ×/Ò/°Ñ2Ô2ØØ—’˜Qœ\¨4Ñ0Ô0Øðñ ˆCð ”Yð ð �ØŸ<š<¨¬°dÑ;Ô;�ØØ”v�KØ#˜�O�OØðñ ��ð
 �B�4‰KˆCØŒwð ØØ9¨q¬wÐ9Ð9Ð9Øðñ �ð Œ|ð Øð ð ð ñ �ð �B�4‰KˆCˆCØ�yŠy˜‰~Œ~Ðr   c                 ób  — ddg}t          |j        ¦  «        }|dk    r|d|j        › d�gz  }ng|d|j        › d�gz  }t          |j        ¦  «        D ]<\  }}||dz
  k    r|d|j        › d	|j        › �gz  }Œ%|d|j        › d	|j        › d
�gz  }Œ=|ddgz  }|dgz  }d                     |¦  «        S )zGenerates the signal signature.r/   r   r   rQ   rV   rW   r   z      rI   rX   rY   r   )r?   Úargsr2   r\   rR   r$   )r
   Úsignalr'   Ún_argsr`   ra   s         r   Ú_generate_signal_signaturez+RstCodeGenerator._generate_signal_signatureú   s$  € ð Øð
ˆõ �V”[Ñ!Ô!ˆØ�QŠ;ˆ;ØØ'�v”{Ð'Ð'Ð'ðñ ˆCˆCð Ø&�v”{Ð&Ð&Ð&ðñ ˆCõ & f¤kÑ2Ô2ð ð ‘��SØ˜& 1™*Ò$Ð$ØØ; ¤Ð;Ð;¨C¬MÐ;Ð;ðñ �C�Cð Ø< ¤Ð<Ð<¨C¬MÐ<Ð<Ð<ðñ �C�Cð ØØðñ ˆCð 	�ˆt‰ˆØ�yŠy˜‰~Œ~Ðr   c                 óÄ  — g }|j         D ]Â}|j        › d|j        › �}||dt          |¦  «        z  d|                      |¦  «        d|                      |j        d¦  «        dgz  }|j        D ].}|                      |j        d¦  «        }||j        › d|› �dgz  }Œ/|dgz  }|j        r|d|j        › d�dgz  }|j        r|g d¢z  }|dgz  }ŒÃd	 	                    |¦  «        S )
zGenerates the signals section.r/   rP   r   Trd   zSignal available since: r.   )r>   r   z   This signal is deprecated.r   r   r   )
r4   r2   r?   rl   r*   rA   ri   rB   rC   r$   )r
   rD   r'   r%   rJ   re   rf   s          r   Ú_generate_signalsz"RstCodeGenerator._generate_signals  sE  € àˆØ”ð  	ð  	ˆAØ”zÐ-Ð- Q¤VÐ-Ð-ˆEØØØ•c˜%‘j”jÑ ØØ×/Ò/°Ñ2Ô2ØØ—’˜Qœ\¨4Ñ0Ô0Øðñ ˆCð ”Vð ð �ØŸ<š<¨¬°dÑ;Ô;�ØØ”v�KØ#˜�O�OØðñ ��ð
 �B�4‰KˆCØŒwð ØØ9¨q¬wÐ9Ð9Ð9Øðñ �ð Œ|ð Øð ð ð ñ �ð �B�4‰KˆCˆCØ�yŠy˜‰~Œ~Ðr   c           
      ó¤  — | j         D �]Æ}t          t          j                             ||› d|j        › d�¦  «        d¦  «        5 }|                     |                      |¦  «        ¦  «         t          |j	        ¦  «        dk    rV|                     |  
                    d|j        ¦  «        ¦  «         |                     |                      |¦  «        ¦  «         t          |j        ¦  «        dk    rV|                     |  
                    d|j        ¦  «        ¦  «         |                     |                      |¦  «        ¦  «         t          |j        ¦  «        dk    rV|                     |  
                    d|j        ¦  «        ¦  «         |                     |                      |¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   �ŒÈdS )	z7Generates the reStructuredText file for each interface.rH   z.rstÚwr   Ú
PropertiesÚMethodsÚSignalsN)r   ÚopenÚosÚpathr$   r2   ÚwriterF   r?   r5   rK   rT   r3   rg   r4   rn   )r
   ÚrstÚoutdirr8   Úoutfiles        r   ÚgeneratezRstCodeGenerator.generate?  sÊ  € à”ð 	=ñ 	=ˆAÝ•b”g—l’l 6¨cÐ+@Ð+@°A´FÐ+@Ð+@Ð+@ÑAÔAÀ3ÑGÔGð 
=È7Ø—’˜d×3Ò3°AÑ6Ô6Ñ7Ô7Ð7Ý�q”|Ñ$Ô$ qÒ(Ð(Ø—M’M $×"8Ò"8¸ÀqÄvÑ"NÔ"NÑOÔOÐOØ—M’M $×";Ò";¸AÑ">Ô">Ñ?Ô?Ð?Ý�q”y‘>”> AÒ%Ð%Ø—M’M $×"8Ò"8¸ÀAÄFÑ"KÔ"KÑLÔLÐLØ—M’M $×"8Ò"8¸Ñ";Ô";Ñ<Ô<Ð<Ý�q”y‘>”> AÒ%Ð%Ø—M’M $×"8Ò"8¸ÀAÄFÑ"KÔ"KÑLÔLÐLØ—M’M $×"8Ò"8¸Ñ";Ô";Ñ<Ô<Ð<ð
=ð 
=ð 
=ñ 
=ô 
=ð 
=ð 
=ð 
=ð 
=ð 
=ð 
=øøøð 
=ð 
=ð 
=ð 
=ùð	=ð 	=s   ÁE3GÇG	Ç
G	N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r*   r	   rF   rK   rT   rb   rg   rl   rn   r{   © r   r   r   r      sÅ   € € € € € Ø=Ð=ð&ð &ð &ðð ð ð8
ð 
ð 
ðB#ð #ð #ðJð ð ð%ð %ð %ðN'ð 'ð 'ðR$ð $ð $ðLð ð ð>$ð $ð $ðL=ð =ð =ð =ð =r   r   )ru   r"   r   r   r   r€   r   r   ú<module>r�      sg   ðð
 
€	€	€	Ø 	€	€	€	à Ð Ð Ð Ð Ð ð~=ð ~=ð ~=ð ~=ð ~=ñ ~=ô ~=ð ~=ð ~=ð ~=r   