o
    MK§d\I  ć                   @   s2   d dl Z d dlmZ ddlmZ G dd dZdS )é    N)Śpathé   )Śutilsc                   @   s|   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd ZdS )ŚDocbookCodeGeneratorc                 C   s   || _ |  ”  d S )N)ŚifacesŚgenerate_expand_dicts)Śselfr   © r	   ś./usr/share/glib-2.0/codegen/codegen_docbook.pyŚ__init__    s   zDocbookCodeGenerator.__init__c           	   	   C   sÜ  d}|r|j D ]
}tt|j|}qntt|j|}d}|rB|j D ]}|jD ]
}tt|j|}q'|jD ]
}tt|j|}q5q"n|jD ]
}tt|j|}qE|jD ]
}tt|j|}qS|ry| j dt	 
|j”|j|j|t|j df ” n| j d|j|t|j df ” d}|jD ])}|dkr”| j d|d df ” | j d|j|t|j d|jf ” |d }q|jD ])}|dkrĪ| j d|d df ” | j d	|j|t|j d|jf ” |d }q¼| 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_synopsisZmax_method_lenŚ_mŚmax_signature_lenŚaŚcountr	   r	   r
   Śprint_method_prototype$   sf   
’


’ż


ū’’"
’’

’’
z+DocbookCodeGenerator.print_method_prototypec           	   	   C   sJ  d}|r|j D ]
}tt|j|}qntt|j|}d}|r4|j D ]}|jD ]
}tt|j|}q'q"n|jD ]
}tt|j|}q7|r]| j dt 	|j”|j|j|t|j df ” n| j d|j|t|j df ” d}|jD ])}|dkr| j d|d df ” | j d|j|t|j d|jf ” |d }qs| 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   Zmax_signal_lenZ_sr   r    r!   r	   r	   r
   Śprint_signal_prototypeY   sL   
’

’’

ū’’"
’’
z+DocbookCodeGenerator.print_signal_prototypec              	   C   s   d}|r|j D ]
}tt|j|}qntt|j|}d}|r.|j D ]
}tt|j|}q"ntt|j|}|rQ| j dt |j”|j|j|t|j df ” n| j d|j|t|j df ” |j	rk|j
rkd}n|j	rqd}nd}| j d||jf ” d S )	Nr   z1<link linkend="gdbus-property-%s.%s">%s</link>%*sr   z%s%*sŚ	readwritez	readable z	writable z	  %s  %s
)Ś
propertiesr   r   r   r   r   r   r   r   ŚreadableŚwritable)r   r   Śpr   Zmax_property_lenZ_pr   Śaccessr	   r	   r
   Śprint_property_prototype   s<   
’
’
ū’’"z-DocbookCodeGenerator.print_property_prototypec                 C   ó\   | j  d” | j  d” | j  d” |jD ]
}| j||dd q| 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   r	   r	   r
   Śprint_synopsis_methods¦   ó   
z+DocbookCodeGenerator.print_synopsis_methodsc                 C   r.   )Nz!  <refsect1 role="signal_proto">
z5    <title role="signal_proto.title">Signals</title>
r/   Tr0   r1   ś  </refsect1>
)r   r   r#   r&   )r   r   r%   r	   r	   r
   Śprint_synopsis_signalsÆ   r3   z+DocbookCodeGenerator.print_synopsis_signalsc                 C   r.   )Nz  <refsect1 role="properties">
z6    <title role="properties.title">Properties</title>
r/   Tr0   r1   r4   )r   r   r(   r-   ©r   r   r+   r	   r	   r
   Śprint_synopsis_propertiesø   r3   z.DocbookCodeGenerator.print_synopsis_propertiesc              	   C   sø  | j  dt |j”|jf ” | j  d|j ” | j  dt |j”|j|j|j|j|jf ” | j  d” | j||dd | j  d” | j  d|  |jd	” ” |j	sV|j
rø| j  d
” |j	D ]'}| j  d” | j  d|j|jf ” | j  d|  |jd	” ” | j  d” q_|j
D ]'}| j  d” | j  d|j|jf ” | j  d|  |jd	” ” | j  d” q| j  d” t|jdkrČ| j  d|j ” |jrŌ| j  d|j ” | j  d” d S )Nz1<refsect2 role="method" id="gdbus-method-%s.%s">
z!  <title>The %s() method</title>
z]  <indexterm zone="gdbus-method-%s.%s"><primary sortas="%s.%s">%s.%s()</primary></indexterm>
ś<programlisting>
Fr0   ś</programlisting>
ś%s
Tś<variablelist role="params">
ś<varlistentry>
zC  <term><literal>IN %s <parameter>%s</parameter></literal>:</term>
ś  <listitem>%s</listitem>
ś</varlistentry>
zD  <term><literal>OUT %s <parameter>%s</parameter></literal>:</term>
ś</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    r	   r	   r
   Śprint_methodĮ   sv   ’’
ś’’

’’’’

’’’’’’z!DocbookCodeGenerator.print_methodc              	   C   s\  | j  dt |j”|jf ” | j  d|j ” | j  dt |j”|j|j|j|j|jf ” | j  d” | j||dd | j  d” | j  d|  |jd	” ” |j	r| j  d
” |j	D ]'}| j  d” | j  d|j
|jf ” | j  d|  |jd	” ” | j  d” q\| j  d” t|jdkr| j  d|j ” |jr¦| j  d|j ” | j  d” d S )Nz1<refsect2 role="signal" id="gdbus-signal-%s.%s">
z!  <title>The "%s" signal</title>
z]  <indexterm zone="gdbus-signal-%s.%s"><primary sortas="%s::%s">%s::%s</primary></indexterm>
r8   Fr0   r9   r:   Tr;   r<   z@  <term><literal>%s <parameter>%s</parameter></literal>:</term>
r=   r>   r?   r   r@   z><warning><para>The "%s" signal is deprecated.</para></warning>rA   )r   r   r   r   r   rB   r&   rC   rD   r$   r   r   rE   rF   )r   r   r%   r    r	   r	   r
   Śprint_signalų   s\   ’’
ś’’

’’’’’’z!DocbookCodeGenerator.print_signalc              	   C   sč   | j  dt |j”|jf ” | j  d|j ” | j  dt |j”|j|j|j|j|jf ” | j  d” | j||dd | j  d” | j  d|  |jd	” ” t	|j
d
kr`| j  d|j
 ” |jrl| j  d|j ” | j  d” d S )Nz5<refsect2 role="property" id="gdbus-property-%s.%s">
z#  <title>The "%s" property</title>
z]  <indexterm zone="gdbus-property-%s.%s"><primary sortas="%s:%s">%s:%s</primary></indexterm>
r8   Fr0   r9   r:   Tr   r@   z@<warning><para>The "%s" property is deprecated.</para></warning>rA   )r   r   r   r   r   rB   r-   rC   rD   r   rE   rF   r6   r	   r	   r
   Śprint_property$  s<   ’’
ś’’’’z#DocbookCodeGenerator.print_propertyc                 C   sh   | j D ]}| || j| ”}q| jD ]}| || j| ”}q|r2t ddd |”}t ddd |”}|S )Nz@[a-zA-Z0-9_]*c                 S   ó   d|   d”dd   d S )Nz<parameter>r   r   z</parameter>©Śgroup©r   r	   r	   r
   Ś<lambda>K  ó    z-DocbookCodeGenerator.expand.<locals>.<lambda>z%[a-zA-Z0-9_]*c                 S   rJ   )Nz
<constant>r   r   z</constant>rK   rM   r	   r	   r
   rN   Q  rO   )Śexpand_member_dict_keysŚreplaceŚexpand_member_dictŚexpand_iface_dict_keysŚexpand_iface_dictŚreŚsub)r   r%   ŚexpandParamsAndConstantsŚkeyr	   r	   r
   ŚexpandB  s    

żżzDocbookCodeGenerator.expandc                 C   sp   |   ||” ” }g }| d”s| d” | d”D ]}| ” }|s#d}| |” q| d”s3| d” d |”S )Nz<para>Ś
z</para><para>z</para>)rY   ŚstripŚ
startswithŚappendŚsplitŚendswithŚjoin)r   r%   rW   ŚresŚliner	   r	   r
   rC   V  s   




z!DocbookCodeGenerator.expand_parasc                 C   s.  i | _ i | _| jD ]w}d|j }dt |j”|jf }|| j|< |jD ]}d|j|jf }dt |j”|j|jf }|| j |< q#|jD ]}d|j|jf }dt |j”|j|jf }|| j |< qC|jD ]}d|j|jf }dt |j”|j|jf }|| j |< qcq	t	| j  
” d	d
| _t	| j 
” d	d
| _d S )Nz#%sz8<link linkend="gdbus-interface-%s.top_of_page">%s</link>z%s.%s()z.<link linkend="gdbus-method-%s.%s">%s()</link>z#%s::%sz.<link linkend="gdbus-signal-%s.%s">"%s"</link>z#%s:%sz0<link linkend="gdbus-property-%s.%s">"%s"</link>T)Śreverse)rR   rT   r   r   r   r   r   r#   r(   ŚsortedŚkeysrP   rS   )r   r   rX   Śvaluer   r%   r+   r	   r	   r
   r   d  sP   


ž


ż

ż

żł

’
’z*DocbookCodeGenerator.generate_expand_dictsc                 C   sš  | j D ]q}tt |d||jf ”d| _| j d” | j d” | j d” | j d” | j d” | j d|j ” | j d	” | j d
t |j”|jf ” | j dt |j”|j	|jf ” | j d” | j d” | j d|j ” | j d|j
 ” | j d” t|jdkr|  |” t|jdkr|  |” t|jdkrŖ|  |” | j dt |j” ” | j d” | j d|  |jd” ” t|jdkrŁ| j d|j ” |jrå| j d|j ” | j d” t|jdkr| j d|j ” | j d” |jD ]	}|  ||” q| j d” t|jdkr?| j d|j ” | j d” |jD ]	}|  ||” q/| j d” t|jdkri| j d|j ” | j d” |jD ]	}|  ||” qY| j d” | j d” | j d ” qd S )!Nz	%s-%s.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-%s.top_of_page">%s</refentrytitle>
za  <indexterm zone="gdbus-interface-%s.top_of_page"><primary sortas="%s">%s</primary></indexterm>
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>
rZ   )r   Śopenr   r`   r   r   r   r   r   rB   Śdoc_string_briefr   r   r2   r#   r5   r(   r7   rC   rD   rE   rF   rG   rH   rI   )r   ŚdocbookŚoutdirr   r   r%   r	   r	   r
   Śgenerate  s   ’’’’’’



’’’’’
’
’’
°zDocbookCodeGenerator.generateN)Ś__name__Ś
__module__Ś__qualname__r   r"   r&   r-   r2   r5   r7   rG   rH   rI   rY   rC   r   rl   r	   r	   r	   r
   r      s    5)$			7,+r   )rU   Śosr   r   r   r   r	   r	   r	   r
   Ś<module>   s   