
    pc\I                     @    d dl Z d dlmZ ddlmZ  G d d          ZdS )    N)path   )utilsc                   b    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dS )DocbookCodeGeneratorc                 <    || _         |                                  d S )N)ifacesgenerate_expand_dicts)selfr	   s     ./usr/share/glib-2.0/codegen/codegen_docbook.py__init__zDocbookCodeGenerator.__init__    s!    ""$$$$$    c           
      h   d}|r-|j         D ]$}t          t          |j                  |          }%n"t          t          |j                  |          }d}|rc|j         D ]Z}|j        D ]$}t          t          |j                  |          }%|j        D ]$}t          t          |j                  |          }%[nX|j        D ]$}t          t          |j                  |          }%|j        D ]$}t          t          |j                  |          }%|rY| j                            dt          j
        |j                  |j        |j        |t          |j                  z
  dfz             n:| j                            d|j        |t          |j                  z
  dfz             d}|j        D ]o}|dk    r"| j                            d|dz   dfz             | j                            d|j        |t          |j                  z
  d|j        fz             |dz   }p|j        D ]o}|dk    r"| j                            d|dz   dfz             | j                            d	|j        |t          |j                  z
  d|j        fz             |dz   }p| j                            d
           d S )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    	>i C C!$S\\>!B!BC !QVn==N 
	Mi Q Q Q QA(+C,<,<>O(P(P%% Q QA(+C,<,<>O(P(P%%QQ Y M M$'AK(8(8:K$L$L!!Z M M$'AK(8(8:K$L$L!! 	SHNNC)!&11FF"S[[0	 	 	 	 HNN9QV0Lb'QQRRR 	 	Aqyyx>A+=r*BBCCCHNN; 1C4D4D Db!&QR   AIEE 	 	Aqyyx>A+=r*BBCCCHNN; 1C4D4D Db!&QR   AIEEvr   c           
         d}|r-|j         D ]$}t          t          |j                  |          }%n"t          t          |j                  |          }d}|r7|j         D ].}|j        D ]$}t          t          |j                  |          }%/n,|j        D ]$}t          t          |j                  |          }%|rY| j                            dt          j	        |j                  |j        |j        |t          |j                  z
  dfz             n:| j                            d|j        |t          |j                  z
  dfz             d}|j        D ]o}|dk    r"| j                            d|dz   dfz             | j                            d|j        |t          |j                  z
  d|j        fz             |dz   }p| j                            d	           d S )
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_prototypeY   s'    	>i C C!$S\\>!B!BC !QVn==N 	Mi Q Q Q QA(+C,<,<>O(P(P%%QQ V M M$'AK(8(8:K$L$L!! 	SHNNC)!&11FF"S[[0	 	 	 	 HNN9QV0Lb'QQRRR 	 	Aqyyx>A+=r*BBCCCHNN; 1C4D4D Db!&QR   AIEEvr   c           
         d}|r-|j         D ]$}t          t          |j                  |          }%n"t          t          |j                  |          }d}|r-|j         D ]$}t          t          |j                  |          }%n"t          t          |j                  |          }|rY| j                            dt          j        |j                  |j        |j        |t          |j                  z
  dfz             n:| j                            d|j        |t          |j                  z
  dfz             |j	        r
|j
        rd}n|j	        rd}nd}| j                            d|d|j        d	           d S )
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    	Bl G G#&s27||5E#F#F  G  #3qv;;0@AA 	Il N N$'BL(9(9;L$M$M!!N !$C$4$46G H H 	SHNNC)!&11FF$s16{{2	 	 	 	 HNN7af.>QV.Lb%QQRRR: 	!!* 	! FFZ 	! FF Fvvvq{{{;<<<<<r   c                 N   | j                             d           | j                             d           | j                             d           |j        D ]}|                     ||d           | j                             d           | j                             d           d S )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LL)*** 	@ 	@A''1$'????'''./////r   c                 N   | j                             d           | j                             d           | j                             d           |j        D ]}|                     ||d           | j                             d           | j                             d           d S )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PP)*** 	@ 	@A''1$'????'''()))))r   c                 N   | j                             d           | j                             d           | j                             d           |j        D ]}|                     ||d           | j                             d           | j                             d           d S )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QQ)*** 	B 	BA))!QD)AAAA'''()))))r   c                 ~   | j                             dt          j        |j                  d|j        d           | j                             d|j        z             | j                             dt          j        |j                  d|j        d|j        d|j        d|j        d|j        d           | j                             d	           |                     ||d
           | j                             d           | j                             d|                     |j        d          z             |j	        s|j
        rr| j                             d           |j	        D ]}| j                             d           | j                             d|j        d|j        d           | j                             d|                     |j        d          z             | j                             d           |j
        D ]}| j                             d           | j                             d|j        d|j        d           | j                             d|                     |j        d          z             | j                             d           | j                             d           t          |j                  dk    r"| j                             d|j        z             |j        r"| j                             d|j        z             | j                             d           d S )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;   $QV,,,,afff6	
 	
 	
 	;qvFGGG %af----%%%
	
 
	
 
	
 	+,,,##Aqe#<<<,---v!2!21<!F!FGHHH9 	0
 	0HNN;<<<Y 
4 
41222{{{AFFF,   1((t<<>   23333Z 
4 
41222{{{AFFF,   1((t<<>   23333HNN.///qw<<!HNNAQWMNNN< 	HNNP6   	'''''r   c                 0   | j                             dt          j        |j                  d|j        d           | j                             d|j        z             | j                             dt          j        |j                  d|j        d|j        d|j        d|j        d|j        d	           | j                             d
           |                     ||d           | j                             d           | j                             d|                     |j        d          z             |j	        r| j                             d           |j	        D ]}| j                             d           | j                             d|j
        d|j        d           | j                             d|                     |j        d          z             | j                             d           | j                             d           t          |j                  dk    r"| j                             d|j        z             |j        r"| j                             d|j        z             | j                             d           d S )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   $QV,,,,afff6	
 	
 	
 	;qvFGGG %af----%%%
	
 
	
 
	
 	+,,,##Aqe#<<<,---v!2!21<!F!FGHHH6 	0HNN;<<<V 
4 
41222{{{AFFF,   1((t<<>   23333HNN.///qw<<!HNNAQWMNNN< 	HNNP6   	'''''r   c                 |   | j                             dt          j        |j                  d|j        d           | j                             d|j        z             | j                             dt          j        |j                  d|j        d|j        d|j        d|j        d|j        d	           | j                             d
           |                     ||d           | j                             d           | j                             d|                     |j        d          z             t          |j
                  dk    r"| j                             d|j
        z             |j        r"| j                             d|j        z             | j                             d           d S )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$  s   $QV,,,,afff6	
 	
 	
 	=HIII %af----%%%
	
 
	
 
	
 	+,,,%%a%>>>,---v!2!21<!F!FGHHHqw<<!HNNAQWMNNN< 	HNNR6   	'''''r   c                    | j         D ]#}|                    || j        |                   }$| j        D ]#}|                    || j        |                   }$|r.t          j        dd |          }t          j        dd |          }|S )Nz@[a-zA-Z0-9_]*c                 H    d|                      d          dd          z   dz   S )Nz<parameter>r   r   z</parameter>groupr    s    r   <lambda>z-DocbookCodeGenerator.expand.<locals>.<lambda>K  s"    -!''!**QRR.8>I r   z%[a-zA-Z0-9_]*c                 H    d|                      d          dd          z   dz   S )Nz
<constant>r   r   z</constant>re   rg   s    r   rh   z-DocbookCodeGenerator.expand.<locals>.<lambda>Q  s"    ,ABB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.expandB  s    / 	= 	=C		#t6s;<<AA. 	< 	<C		#t5c:;;AA# 	 II A  GG A
 r   c                    |                      ||                                          }g }|                    d          s|                    d           |                    d          D ]/}|                                }|sd}|                    |           0|                    d          s|                    d           d                    |          S )Nz<para>r1   z</para><para>z</para>)rs   strip
startswithappendsplitendswithjoin)r   r+   rq   reslines        r   rW   z!DocbookCodeGenerator.expand_parasV  s    KK344::<<||H%% 	!JJx   GGDMM 	 	D::<<D '&JJtzz)$$ 	"JJy!!!yy~~r   c           	      R   i | _         i | _        | j        D ]5}d|j        z  }dt	          j        |j                  d|j        d}|| j        |<   |j        D ]K}|j        d|j        d}dt	          j        |j                  d|j        d|j        d	}|| j         |<   L|j        D ]K}d
|j        d|j        }dt	          j        |j                  d|j        d|j        d}|| j         |<   L|j        D ]K}d
|j        d|j        }dt	          j        |j                  d|j        d|j        d}|| j         |<   L7t          | j         
                                d          | _        t          | j        
                                d          | _        d S )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_dictsd  s	   "$!# 	5 	5A16"CC%af----E +0D"3'Y 5 5#$66616662)!&1111FFFFFF
 05',,Y 5 5#$6661662)!&1111FFFFFF
 05',,\ 5 5"#&&&!&&1)!&1111FFFFFF
 05',,5 (.#((**D(
 (
 (
$ '-"''))4'
 '
 '
###r   c           
      
   | j         D ]n}t          t          j        ||d|j        d          d          | _        | j                            d           | j                            d           | j                            d           | j                            d           | j                            d           | j                            d	|j        z             | j                            d
           | j                            dt          j        |j                  d|j        d           | j                            dt          j        |j                  d|j	        d|j        d           | j                            d           | j                            d           | j                            d|j        z             | j                            d|j
        z             | j                            d           t          |j                  dk    r|                     |           t          |j                  dk    r|                     |           t          |j                  dk    r|                     |           | j                            dt          j        |j                  z             | j                            d           | j                            d|                     |j        d          z             t          |j                  dk    r"| j                            d|j        z             |j        r"| j                            d|j        z             | j                            d           t          |j                  dk    rv| j                            d|j        z             | j                            d            |j        D ]}|                     ||           | j                            d           t          |j                  dk    rv| j                            d!|j        z             | j                            d"           |j        D ]}|                     ||           | j                            d           t          |j                  dk    rv| j                            d#|j        z             | j                            d$           |j        D ]}|                     ||           | j                            d           | j                            d%           | j                            d&           pd S )'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   rz   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	! P	!ADIfWWWafff.MNNPSTTDHHNN2HNNEFFFHNNT   HNN_   HNN6"""HNN716BCCCHNN=)))HNNN(0000!&&&:   HNNN(0000!2G2G2GQ   HNN>***HNN+,,,HNN6!&ABBBHNN<@RSTTTHNN,---19~~!!++A...19~~!!++A...1<  1$$..q111HNNB(002   HNNMNNNHNN8t'8'8t'L'LMNNN17||aG17STTT| Uv   HNN?+++19~~!!G16R   WXXX , ,A%%a++++///19~~!!G16R   WXXX , ,A%%a++++///1<  1$$JafU   N    . .A''1----///HNN?+++HNN4    aP	! P	!r   N)__name__
__module____qualname__r   r'   r.   r9   r>   rA   rD   r[   r_   rb   rs   rW   r
   r    r   r   r   r      s        % % %3 3 3j' ' 'R"= "= "=H0 0 0* * ** * *5( 5( 5(n*( *( *(X( ( (<  (  )
 )
 )
VQ! Q! Q! Q! Q!r   r   )ro   osr   r   r   r   r   r   r   <module>r      sp   , 
			            A! A! A! A! A! A! A! A! A! A!r   