
    @;fI                     @    d dl Z d dlZd dlmZ ddlmZ  G d d      Zy)    N)path   )utilsc                   `    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 Zd Zy)DocbookCodeGeneratorc                 2    || _         | j                          y )N)ifacesgenerate_expand_dicts)selfr	   s     )share/glib-2.0/codegen/codegen_docbook.py__init__zDocbookCodeGenerator.__init__!   s    ""$    c           
         d}|r1|j                   D ]!  }t        t        |j                        |      }# nt        t        |j                        |      }d}|rr|j                   D ]b  }|j                  D ]!  }t        t        |j
                        |      }# |j                  D ]!  }t        t        |j
                        |      }# d n`|j                  D ]!  }t        t        |j
                        |      }# |j                  D ]!  }t        t        |j
                        |      }# |rk| j                  j                  dt        j                  |j                        |j                  |j                  |t        |j                        z
  dfz         nA| j                  j                  d|j                  |t        |j                        z
  dfz         d}|j                  D ]{  }|dkD  r#| j                  j                  d|dz   dfz         | j                  j                  d|j
                  |t        |j
                        z
  d|j                  fz         |dz   }} |j                  D ]{  }|dkD  r#| j                  j                  d|dz   dfz         | j                  j                  d	|j
                  |t        |j
                        z
  d|j                  fz         |dz   }} | j                  j                  d
       y )Nr   z1<link linkend="gdbus-method-%s.%s">%s</link>%*s ( %s%*s (,
%*s   zIN  %s%*s %sr   zOUT %s%*s %s);
)methodsmaxlennamein_args	signatureout_argsoutwriter   dots_to_hyphens)	r   imin_synopsismax_method_len_mmax_signature_lenacounts	            r   print_method_prototypez+DocbookCodeGenerator.print_method_prototype%   s   ii C!$S\>!BC !QVVn=Nii Q QA(+C,<>O(P%Q QA(+C,<>O(P%QQ YY M$'AKK(8:K$L!MZZ M$'AKK(8:K$L!M HHNNC))!&&1FFFF"S[0	 HHNN9QVV0Lb'QQR 	Aqyx>A+=r*BBCHHNN;; 1C4D Db!&&QR AIE	  	Aqyx>A+=r*BBCHHNN;; 1C4D Db!&&QR AIE	 	vr   c           
      B   d}|r1|j                   D ]!  }t        t        |j                        |      }# nt        t        |j                        |      }d}|rB|j                   D ]2  }|j                  D ]!  }t        t        |j
                        |      }# 4 n0|j                  D ]!  }t        t        |j
                        |      }# |rk| j                  j                  dt        j                  |j                        |j                  |j                  |t        |j                        z
  dfz         nA| j                  j                  d|j                  |t        |j                        z
  dfz         d}|j                  D ]{  }|dkD  r#| j                  j                  d|dz   dfz         | j                  j                  d|j
                  |t        |j
                        z
  d|j                  fz         |dz   }} | j                  j                  d	       y )
Nr   z1<link linkend="gdbus-signal-%s.%s">%s</link>%*s (r   r   r   r   z%s%*s %sr   r   )
signalsr   r   r   argsr   r   r   r   r   )	r   r   sr!   max_signal_len_sr$   r%   r&   s	            r   print_signal_prototypez+DocbookCodeGenerator.print_signal_prototypeZ   s   ii C!$S\>!BC !QVVn=Nii Q QA(+C,<>O(P%QQ VV M$'AKK(8:K$L!M HHNNC))!&&1FFFF"S[0	 HHNN9QVV0Lb'QQR 	Aqyx>A+=r*BBCHHNN;; 1C4D Db!&&QR AIE	 	vr   c           
      `   d}|r1|j                   D ]!  }t        t        |j                        |      }# nt        t        |j                        |      }d}|r1|j                   D ]!  }t        t        |j                        |      }# nt        t        |j                        |      }|rk| j
                  j                  dt        j                  |j                        |j                  |j                  |t        |j                        z
  dfz         nA| j
                  j                  d|j                  |t        |j                        z
  dfz         |j                  r|j                  rd}n|j                  rd}nd}| j
                  j                  d|d|j                  d	       y )
Nr   z1<link linkend="gdbus-property-%s.%s">%s</link>%*sr   z%s%*s	readwritez	readable z	writable z  
)
propertiesr   r   r   r   r   r   r   r   readablewritable)r   r   pr!   max_property_len_pr$   accesss           r   print_property_prototypez-DocbookCodeGenerator.print_property_prototype   s[   ll G#&s277|5E#F G  #3qvv;0@All N$'BLL(9;L$M!N !$C$46G HHHNNC))!&&1FFFF$s166{2	 HHNN7aff.>QVV.Lb%QQR::!** FZZ F Fvq{{;<r   c                 \   | j                   j                  d       | j                   j                  d       | j                   j                  d       |j                  D ]  }| j                  ||d        | j                   j                  d       | j                   j                  d       y )Nz#  <refsynopsisdiv role="synopsis">
z1    <title role="synopsis.title">Methods</title>
    <synopsis>
Tr!   </synopsis>
z  </refsynopsisdiv>
)r   r   r   r'   )r   r   r    s      r   print_synopsis_methodsz+DocbookCodeGenerator.print_synopsis_methods   s    =>KL)* 	@A''1$'?	@'./r   c                 \   | j                   j                  d       | j                   j                  d       | j                   j                  d       |j                  D ]  }| j                  ||d        | j                   j                  d       | j                   j                  d       y )Nz!  <refsect1 role="signal_proto">
z5    <title role="signal_proto.title">Signals</title>
r;   Tr<   r=     </refsect1>
)r   r   r)   r.   )r   r   r+   s      r   print_synopsis_signalsz+DocbookCodeGenerator.print_synopsis_signals   s    ;<OP)* 	@A''1$'?	@'()r   c                 \   | j                   j                  d       | j                   j                  d       | j                   j                  d       |j                  D ]  }| j                  ||d        | j                   j                  d       | j                   j                  d       y )Nz  <refsect1 role="properties">
z6    <title role="properties.title">Properties</title>
r;   Tr<   r=   r@   )r   r   r2   r9   r   r   r5   s      r   print_synopsis_propertiesz.DocbookCodeGenerator.print_synopsis_properties   s    9:PQ)* 	BA))!QD)A	B'()r   c                 t   | j                   j                  dt        j                  |j                        d|j                  d       | j                   j                  d|j                  z         | j                   j                  dt        j                  |j                        d|j                  d|j
                  d|j                  d|j                  d|j                  d       | j                   j                  d	       | j                  ||d
       | j                   j                  d       | j                   j                  d| j                  |j                  d      z         |j                  s|j                  r| j                   j                  d       |j                  D ]  }| j                   j                  d       | j                   j                  d|j                  d|j                  d       | j                   j                  d| j                  |j                  d      z         | j                   j                  d        |j                  D ]  }| j                   j                  d       | j                   j                  d|j                  d|j                  d       | j                   j                  d| j                  |j                  d      z         | j                   j                  d        | j                   j                  d       t        |j                        dkD  r(| j                   j                  d|j                  z         |j                  r(| j                   j                  d|j                  z         | j                   j                  d       y )Nz)<refsect2 role="method" id="gdbus-method-.">
z!  <title>The %s() method</title>
z   <indexterm zone="gdbus-method-"><primary sortas="">z()</primary></indexterm>
<programlisting>
Fr<   </programlisting>
%s
T<variablelist role="params">
<varlistentry>
z  <term><literal>IN  <parameter></parameter></literal>:</term>
  <listitem>%s</listitem>
</varlistentry>
z  <term><literal>OUT </variablelist>
r   #<para role="since">Since %s</para>
z><warning><para>The %s() method is deprecated.</para></warning></refsect2>
)r   r   r   r   r   name_without_prefixr'   expand_paras
doc_stringr   r   r   r   since
deprecated)r   r   r    r%   s       r   print_methodz!DocbookCodeGenerator.print_method   s   $$QVV,aff6	
 	;qvvFG %%aff-%%
	
 	+,##Aqe#<,-v!2!21<<!FGH99

HHNN;<YY 
412{{AFF, 1((t<> 23
4 ZZ 
412{{AFF, 1((t<> 23
4 HHNN./qww<!HHNNAQWWMN<<HHNNP66 	'r   c                    | j                   j                  dt        j                  |j                        d|j                  d       | j                   j                  d|j                  z         | j                   j                  dt        j                  |j                        d|j                  d|j
                  d|j                  d|j                  d|j                  d	       | j                   j                  d
       | j                  ||d       | j                   j                  d       | j                   j                  d| j                  |j                  d      z         |j                  r| j                   j                  d       |j                  D ]  }| j                   j                  d       | j                   j                  d|j                  d|j                  d       | j                   j                  d| j                  |j                  d      z         | j                   j                  d        | j                   j                  d       t        |j                        dkD  r(| j                   j                  d|j                  z         |j                  r(| j                   j                  d|j                  z         | j                   j                  d       y )Nz)<refsect2 role="signal" id="gdbus-signal-rF   rG   z!  <title>The "%s" signal</title>
z   <indexterm zone="gdbus-signal-rH   ::rI   </primary></indexterm>
rJ   Fr<   rK   rL   TrM   rN   z  <term><literal>rO   rP   rQ   rR   rS   r   rT   z><warning><para>The "%s" signal is deprecated.</para></warning>rU   )r   r   r   r   r   rV   r.   rW   rX   r*   r   r   rY   rZ   )r   r   r+   r%   s       r   print_signalz!DocbookCodeGenerator.print_signal   s   $$QVV,aff6	
 	;qvvFG %%aff-%%
	
 	+,##Aqe#<,-v!2!21<<!FGH66HHNN;<VV 
412{{AFF, 1((t<> 23
4 HHNN./qww<!HHNNAQWWMN<<HHNNP66 	'r   c                    | j                   j                  dt        j                  |j                        d|j                  d       | j                   j                  d|j                  z         | j                   j                  dt        j                  |j                        d|j                  d|j
                  d|j                  d|j                  d|j                  d	       | j                   j                  d
       | j                  ||d       | j                   j                  d       | j                   j                  d| j                  |j                  d      z         t        |j                        dkD  r(| j                   j                  d|j                  z         |j                  r(| j                   j                  d|j                  z         | j                   j                  d       y )Nz-<refsect2 role="property" id="gdbus-property-rF   rG   z#  <title>The "%s" property</title>
z"  <indexterm zone="gdbus-property-rH   :rI   r^   rJ   Fr<   rK   rL   Tr   rT   z@<warning><para>The "%s" property is deprecated.</para></warning>rU   )r   r   r   r   r   rV   r9   rW   rX   r   rY   rZ   rC   s      r   print_propertyz#DocbookCodeGenerator.print_property%  sZ   $$QVV,aff6	
 	=HI %%aff-%%
	
 	+,%%a%>,-v!2!21<<!FGHqww<!HHNNAQWWMN<<HHNNR66 	'r   c                 *   | j                   D ]!  }|j                  || j                  |         }# | j                  D ]!  }|j                  || j                  |         }# |r0t        j                  dd |      }t        j                  dd |      }|S )Nz@[a-zA-Z0-9_]*c                 6    d| j                  d      dd  z   dz   S )Nz<parameter>r   r   z</parameter>groupr    s    r   <lambda>z-DocbookCodeGenerator.expand.<locals>.<lambda>L  s    -!''!*QR.8>I r   z%[a-zA-Z0-9_]*c                 6    d| j                  d      dd  z   dz   S )Nz
<constant>r   r   z</constant>re   rg   s    r   rh   z-DocbookCodeGenerator.expand.<locals>.<lambda>R  s    ,AB7-G r   )expand_member_dict_keysreplaceexpand_member_dictexpand_iface_dict_keysexpand_iface_dictresub)r   r+   expandParamsAndConstantskeys       r   expandzDocbookCodeGenerator.expandC  s    // 	=C		#t66s;<A	=.. 	<C		#t55c:;A	<# IA  GA
 r   c                    t        j                  | j                  ||            j                         }g }|j	                  d      s|j                  d       |j                  d      D ]'  }|j                         }|sd}|j                  |       ) |j                  d      s|j                  d       dj                  |      S )Nz<para>r1   z</para><para>z</para>)	textwrapdedentrs   rstrip
startswithappendsplitendswithjoin)r   r+   rq   reslines        r   rW   z!DocbookCodeGenerator.expand_parasW  s    OODKK+CDELLN||H%JJx GGDM 	D;;=D&JJt		
 zz)$JJy!yy~r   c           	      `   i | _         i | _        | j                  D ]  }d|j                  z  }dt	        j
                  |j                        d|j                  d}|| j                  |<   |j                  D ]j  }|j                  d|j                  d}dt	        j
                  |j                        d|j                  d|j                  d	}|| j                   |<   l |j                  D ]j  }d
|j                  d|j                  }dt	        j
                  |j                        d|j                  d|j                  d}|| j                   |<   l |j                  D ]j  }d
|j                  d|j                  }dt	        j
                  |j                        d|j                  d|j                  d}|| j                   |<   l  t        | j                   j                         d      | _        t        | j                  j                         d      | _        y )Nz#%sz<link linkend="gdbus-interface-.top_of_page">z</link>rF   z()z<link linkend="gdbus-method-rI   z	()</link>#r]   z<link linkend="gdbus-signal-z">"z"</link>ra   z<link linkend="gdbus-property-T)reverse)rl   rn   r	   r   r   r   r   r)   r2   sortedkeysrj   rm   )r   r   rr   valuer    r+   r5   s          r   r
   z*DocbookCodeGenerator.generate_expand_dictse  s   "$!# 	5A166"C%%aff-E +0D""3'YY 5#$661662))!&&1FFFF
 05'',5 YY 5#$661662))!&&1FFFF
 05'',5 \\ 5"#&&!&&1))!&&1FFFF
 05'',5/	5B (.##((*D(
$ '-""'')4'
#r   c           
         | j                   D ]  }t        t        j                  ||d|j                  d      d      | _        | j
                  j                  d       | j
                  j                  d       | j
                  j                  d       | j
                  j                  d       | j
                  j                  d       | j
                  j                  d	|j                  z         | j
                  j                  d
       | j
                  j                  dt        j                  |j                        d|j                  d       | j
                  j                  dt        j                  |j                        d|j                  d|j                  d       | j
                  j                  d       | j
                  j                  d       | j
                  j                  d|j                  z         | j
                  j                  d|j                  z         | j
                  j                  d       t        |j                        dkD  r| j                  |       t        |j                        dkD  r| j                  |       t        |j                         dkD  r| j#                  |       | j
                  j                  dt        j                  |j                        z         | j
                  j                  d       | j
                  j                  d| j%                  |j&                  d      z         t        |j(                        dkD  r(| j
                  j                  d|j(                  z         |j*                  r(| j
                  j                  d|j                  z         | j
                  j                  d       t        |j                        dkD  r| j
                  j                  d|j                  z         | j
                  j                  d        |j                  D ]  }| j-                  ||        | j
                  j                  d       t        |j                        dkD  r| j
                  j                  d!|j                  z         | j
                  j                  d"       |j                  D ]  }| j/                  ||        | j
                  j                  d       t        |j                         dkD  r| j
                  j                  d#|j                  z         | j
                  j                  d$       |j                   D ]  }| j1                  ||        | j
                  j                  d       | j
                  j                  d%       | j
                  j                  d&        y )'N-z.xmlwr   z'<?xml version="1.0" encoding="utf-8"?>
zA<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
zL               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
z]>
z<refentry id="gdbus-%s">
z  <refmeta>z:    <refentrytitle role="top_of_page" id="gdbus-interface-r   z</refentrytitle>
z#  <indexterm zone="gdbus-interface-z.top_of_page"><primary sortas="rI   r^   z  </refmeta>z  <refnamediv>z    <refname>%s</refname>z    <refpurpose>%s</refpurpose>z  </refnamediv>r   z/<refsect1 role="desc" id="gdbus-interface-%s">
z/  <title role="desc.title">Description</title>
z  %s
Tz%  <para role="since">Since %s</para>
z?<warning><para>The %s interface is deprecated.</para></warning>z</refsect1>
z0<refsect1 role="details" id="gdbus-methods-%s">
z5  <title role="details.title">Method Details</title>
z0<refsect1 role="details" id="gdbus-signals-%s">
z5  <title role="details.title">Signal Details</title>
z3<refsect1 role="details" id="gdbus-properties-%s">
z7  <title role="details.title">Property Details</title>
z</refentry>
r1   )r	   openr   r|   r   r   r   r   r   rV   doc_string_briefr   r   r>   r)   rA   r2   rD   rW   rX   rY   rZ   r[   r_   rb   )r   docbookoutdirr   r    r+   s         r   generatezDocbookCodeGenerator.generate  s*    P	!ADIIfWaff.MNPSTDHHHNN2HHNNEFHHNNT HHNN_ HHNN6"HHNN7166BCHHNN=)HHNN((0!&&: HHNN((0!2G2GQ HHNN>*HHNN+,HHNN6!&&ABHHNN<@R@RSTHHNN,-199~!++A.199~!++A.1<< 1$..q1HHNNB((02 HHNNMNHHNN8t'8'8t'LMN177|aG177ST||Uvv HHNN?+199~!G166R WX ,A%%a+,/199~!G166R WX ,A%%a+,/1<< 1$JaffU N  .A''1-./HHNN?+HHNN4 aP	!r   N)__name__
__module____qualname__r   r'   r.   r9   r>   rA   rD   r[   r_   rb   rs   rW   r
   r    r   r   r   r       sO    %3j'R"=H0**5(n*(X(<()
VQ!r   r   )ro   ru   osr   r   r   r   r   r   r   <module>r      s   , 
   A! A!r   