
    *)hO&                     0    S SK r S SKrS SKr " S S5      rg)    Nc                   Z    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)MdCodeGenerator   z+Generates documentation in Markdown format.c                 0    Xl         U R                  5         g )N)ifaces_generate_expand_dicts)selfr   s     )/usr/share/glib-2.0/codegen/codegen_md.py__init__MdCodeGenerator.__init__   s    ##%    c                 *   / n[         R                  " U5      R                  S5       H  nUR                  5       nUS:X  a  UR	                  S5        M,  U R
                   H!  nUR                  XPR                  U   5      nM#     U R                   H!  nUR                  XPR                  U   5      nM#     U(       a2  [        R                  " SS U5      n[        R                  " SS U5      nUR	                  U5        M     SR                  U5      $ )z)Expands parameters and constant literals.
 z@[a-zA-Z0-9_]*c                 6    SU R                  S5      SS  -   S-   $ N`r      groupms    r
   <lambda>)MdCodeGenerator._expand.<locals>.<lambda>&       cAGGAJqrN2S8r   z%[a-zA-Z0-9_]*c                 6    SU R                  S5      SS  -   S-   $ r   r   r   s    r
   r   r   ,   r   r   )textwrapdedentsplitrstrip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
   _expandMdCodeGenerator._expand   s    OOA&,,T2D;;=Drz

244||C)A)A#)FG 533||C)@)@)EF 4'vv$8 vv$8
 JJt- 3. yy~r   c                 h   0 U l         0 U l        U R                   GHE  nSUR                   3nSUR                   S3nX0R                  U'   UR                   HL  nUR                  < SUR                  < S3nSUR                   SUR                   S3nX0R                   U'   MN     UR
                   HL  nSUR                  < SUR                  < 3nSUR                   SUR                   S3nX0R                   U'   MN     UR                   HL  nSUR                  < SUR                  < 3nSUR                   SUR                   S3nX0R                   U'   MN     GMH     [        U R                   R                  5       SS	9U l	        [        U R                  R                  5       SS	9U l
        g
)z9Generates the dictionaries used to expand gtk-doc sigils.#r   z`_.z():::T)reverseN)r$   r&   r   namemethodssignals
propertiessortedkeysr"   r%   )r	   ir.   valuer   r*   ps          r
   r   &MdCodeGenerator._generate_expand_dicts2   sv   #% "$AaffX,CxrNE+0##C(YY#$661662AFF81QVVHB/05((- 
 YY#$661662AFF82affXR005((- 
 \\"#&&!&&1AFF81QVVHB/05((- " , )/$$))+T)
% (.##((*D(
$r   c                    [        UR                  5      nSUR                   S3SUR                   3SSUR                  -   SSSUR                  R	                  5       SU R                  UR                  S5      S/nUR                  (       a  USUR                   S	3S/-  nUR                  (       a  US
S/-  nUS/-  nSR                  U5      $ )z2Generates the header and preamble of the document.zTitle: z D-Bus InterfacezSlug: r   z# z## DescriptionTzInterface available since: r3   z(*Warning*: This interface is deprecated.r   )
lenr7   name_without_prefixdoc_string_briefstripr/   
doc_stringsince
deprecatedr)   )r	   iface
header_lenr,   s       r
   _generate_header MdCodeGenerator._generate_headerS   s    _
ejj\!12UZZL!5,,,""((*LL))40
 ;;-ekk]!< C : C 	tyy~r   c                 2    SU-   S/nSR                  U5      $ )z)Generates a section with the given title.### r   r   )r)   )r	   titler7   r,   s       r
   _generate_section!MdCodeGenerator._generate_sectionp   s%     UN
 yy~r   c                    / nUR                    H  nUR                   SUR                   3nUR                  (       a  UR                  (       a  SnOUR                  (       a  SnOSnUSU-   SSSUR                   S	U S	UR                   3SSU R                  UR                  S
5      S/-  nUR                  (       a  USUR                   S3S/-  nUR                  (       a  USS/-  nUS/-  nM     SR                  U5      $ )z!Generates the properties section.r5   	readwritewritablereadablerN   r   ```     TzProperty available since: r3   z'*Warning*: This property is deprecated.r   )
r:   r7   rU   rT   	signaturer/   rF   rG   rH   r)   )r	   rI   r,   r?   rO   accesss         r
   _generate_properties$MdCodeGenerator._generate_propertiesx   s   !!Azzl!AFF8,Ezzajj$##qvvhaxq6Q\\40	 	C ww0	;  ||=  B4KC9 ": yy~r   c                    S/n[        UR                  5      n[        UR                  5      nUS:X  a  US:X  a  USUR                   S3/-  nOUSUR                   S3/-  n[	        UR                  5       HV  u  pVXSS-
  :X  a(  US:X  a"  USUR                   SUR
                   3/-  nM5  USUR                   SUR
                   S	3/-  nMX     [	        UR                  5       HP  u  pVXTS-
  :X  a"  US
UR                   SUR
                   3/-  nM/  US
UR                   SUR
                   S	3/-  nMR     US/-  nUS/-  nSR                  U5      $ )z/Generates the method signature as a code block.rV   r   rW    () (r   z	      IN rX   ,z
      OUT     )r   )rB   in_argsout_argsr7   	enumeraterY   r)   )r	   methodr,   	n_in_args
n_out_argsidxargs          r
   _generate_method_signature*MdCodeGenerator._generate_method_signature   s    
 '	)
>jAov{{m3' C v{{m2& C &fnn5a-'J!O#CHH:Qs}}o> C #CHH:Qs}}oQ? C 6 &foo6q.($SXXJa? C $SXXJaa@ C 7  C 	wyy~r   c           
         / nUR                    H  nUR                   SUR                   3nUSU-   SU R                  U5      SU R                  UR                  S5      S/-  nUR
                   H6  nU R                  UR                  S5      nUSUR                   SU 3S/-  nM8     US/-  nUR                  (       a  USUR                   S3S/-  nUR                  (       a  USS/-  nUS/-  nM     S	R                  U5      $ )
zGenerates the methods section.r3   rN   r   Tz* z: zMethod available since: z%*Warning*: This method is deprecated.r   )	r8   r7   rj   r/   rF   rb   rG   rH   r)   )r	   rI   r,   r   rO   aarg_descs          r
   _generate_methods!MdCodeGenerator._generate_methods   s'   Azzl!AFF8,E//2Q\\40 C YY<<d;8*-   B4KCww.qwwiq9  ||;  B4KC7 8 yy~r   c                    S/n[        UR                  5      nUS:X  a  USUR                   S3/-  nOUSUR                   S3/-  n[        UR                  5       HP  u  pEXCS-
  :X  a"  USUR                   SUR                   3/-  nM/  USUR                   SUR                   S	3/-  nMR     US
/-  nUS/-  nSR                  U5      $ )zGenerates the signal signature.rV   r   rW   r^   r_   r   z      rX   r`   ra   r   )rB   argsr7   rd   rY   r)   )r	   signalr,   n_argsrh   ri   s         r
   _generate_signal_signature*MdCodeGenerator._generate_signal_signature   s    
 V[[!Q;v{{m3' C v{{m2& C &fkk21*$ 
!CMM?; C  
!CMM?!< C 3  C 	wyy~r   c           
         / nUR                    H  nUR                   SUR                   3nUSU-   SU R                  U5      SU R                  UR                  S5      S/-  nUR
                   H5  nU R                  UR                  S5      nUUR                   SU 3S/-  nM7     US/-  nUR                  (       a  USUR                   S3S/-  nUR                  (       a  USS/-  nUS/-  nM     S	R                  U5      $ )
zGenerates the signals section.r4   rN   r   Tz  zSignal available since: r3   z%*Warning*: This signal is deprecated.r   )	r9   r7   ru   r/   rF   rr   rG   rH   r)   )r	   rI   r,   r*   rO   rm   rn   s          r
   _generate_signals!MdCodeGenerator._generate_signals   s%   Azzl"QVVH-E//2Q\\40 C VV<<d;vvh
O   B4KCww.qwwiq9  ||;  B4KC9 : yy~r   c           
      p   U R                    GH  n[        [        R                  R	                  X! SUR
                   S35      S5       nUR                  U R                  U5      5        [        UR                  5      S:  aK  UR                  U R                  SUR
                  5      5        UR                  U R                  U5      5        [        UR                  5      S:  aK  UR                  U R                  SUR
                  5      5        UR                  U R                  U5      5        [        UR                  5      S:  aK  UR                  U R                  SUR
                  5      5        UR                  U R                  U5      5        SSS5        GM     g! , (       d  f       GM  = f)	z/Generates the Markdown file for each interface.-z.mdwr   
PropertiesMethodsSignalsN)r   openospathr)   r7   writerK   rB   r:   rP   r[   r8   ro   r9   rx   )r	   mdoutdirr=   outfiles        r
   generateMdCodeGenerator.generate!  s.   Abggll6T166(#+>?Ed33A67q||$q(MM$"8"8qvv"NOMM$";";A">?qyy>A%MM$"8"8AFF"KLMM$"8"8";<qyy>A%MM$"8"8AFF"KLMM$"8"8";< FE EEs   
EF%%
F5	)r&   r%   r$   r"   r   N)__name__
__module____qualname____firstlineno____doc__r   r/   r   rK   rP   r[   rj   ro   ru   rx   r   __static_attributes__ r   r
   r   r      sA    5&8
B: D%NB: D=r   r   )r   r'   r   r   r   r   r
   <module>r      s    
 	 _= _=r   