ó
Þw¶Vc           @   so   d  d l  Z  d  d l Z d d l m Z d d l m Z d d l m Z d d l m Z d d	 d „  ƒ  YZ d S(
   iÿÿÿÿNi   (   t   config(   t   utils(   t	   dbustypes(   t   parsert   DocbookCodeGeneratorc           B   s†   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 RS(   c         C   s    | |  _  | |  _ |  j ƒ  d  S(   N(   t   ifacest   docbookt   generate_expand_dicts(   t   selfR   R   (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyt   __init__!   s    		c   	      C   s´  d } | r; xD | j  D] } t t | j ƒ | ƒ } q Wn t t | j ƒ | ƒ } d } | rÎ xÄ | j  D]^ } x) | j D] } t t | j ƒ | ƒ } qy Wx) | j D] } t t | j ƒ | ƒ } q¥ Wqi WnX x) | j D] } t t | j ƒ | ƒ } qØ Wx) | j D] } t t | j ƒ | ƒ } qW| rq|  j j d t	 j
 | j ƒ | j | j | t | j ƒ d f ƒ n- |  j j d | j | t | j ƒ d f ƒ d } x{ | j D]p } | d k rá|  j j d | d d f ƒ n  |  j j d | j | t | j ƒ d | j f ƒ | d } q®Wx{ | j D]p } | d k r_|  j j d | d d f ƒ n  |  j j d	 | j | t | j ƒ d | j f ƒ | d } q,W|  j j d
 ƒ d  S(   Ni    s1   <link linkend="gdbus-method-%s.%s">%s</link>%*s (t    s   %s%*s (s   ,
%*si   s   IN  %s%*s %si   s   OUT %s%*s %ss   );
(   t   methodst   maxt   lent   namet   in_argst	   signaturet   out_argst   outt   writeR   t   dots_to_hyphens(	   R   t   it   mt   in_synopsist   max_method_lent   _mt   max_signature_lent   at   count(    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyt   print_method_prototype&   sB    #9!!3!3c   	      C   sÞ  d } | r; xD | j  D] } t t | j ƒ | ƒ } q Wn t t | j ƒ | ƒ } d } | r¢ xl | j  D]2 } x) | j D] } t t | j ƒ | ƒ } qy Wqi Wn, x) | j D] } t t | j ƒ | ƒ } q¬ W| r|  j j d t j	 | j ƒ | j | j | t | j ƒ d f ƒ n- |  j j d | j | t | j ƒ d f ƒ d } x{ | j D]p } | d k r‰|  j j d | d d f ƒ n  |  j j d | j | t | j ƒ d | j f ƒ | d } qVW|  j j d	 ƒ d  S(
   Ni    s1   <link linkend="gdbus-signal-%s.%s">%s</link>%*s (R
   s   %s%*s (s   ,
%*si   s   %s%*s %si   s   );
(
   t   signalsR   R   R   t   argsR   R   R   R   R   (	   R   R   t   sR   t   max_signal_lent   _sR   R   R   (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyt   print_signal_prototypeN   s0    #9!!3c         C   sr  d } | r; xD | j  D] } t t | j ƒ | ƒ } q Wn t t | j ƒ | ƒ } d } | rŽ xD | j  D] } t t | j ƒ | ƒ } qi Wn t t | j ƒ | ƒ } | rñ |  j j d t j | j ƒ | j | j | t | j ƒ d f ƒ n- |  j j d | j | t | j ƒ d f ƒ | j	 r9| j
 r9d } n | j	 rKd } n d } |  j j d | | j f ƒ d  S(	   Ni    s1   <link linkend="gdbus-property-%s.%s">%s</link>%*sR
   s   %s%*st	   readwrites	   readable s	   writable s	     %s  %s
(   t
   propertiesR   R   R   R   R   R   R   R   t   readablet   writable(   R   R   t   pR   t   max_property_lent   _pR   t   access(    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyt   print_property_prototypem   s*    9!			c         C   s’   |  j  j d d ƒ |  j  j d d ƒ |  j  j d d	 ƒ x' | j D] } |  j | | d t ƒqF W|  j  j d d
 ƒ |  j  j d d ƒ d  S(   Ns#     <refsynopsisdiv role="synopsis">
s1       <title role="synopsis.title">Methods</title>
s       <synopsis>
R   s   </synopsis>
s     </refsynopsisdiv>
(    (    (    (    (    (   R   R   R   R   t   True(   R   R   R   (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyt   print_synopsis_methods‹   s    c         C   s’   |  j  j d d ƒ |  j  j d d ƒ |  j  j d d	 ƒ x' | j D] } |  j | | d t ƒqF W|  j  j d d
 ƒ |  j  j d d ƒ d  S(   Ns!     <refsect1 role="signal_proto">
s5       <title role="signal_proto.title">Signals</title>
s       <synopsis>
R   s   </synopsis>
s     </refsect1>
(    (    (    (    (    (   R   R   R   R#   R-   (   R   R   R    (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyt   print_synopsis_signals”   s    c         C   s’   |  j  j d d ƒ |  j  j d d ƒ |  j  j d d	 ƒ x' | j D] } |  j | | d t ƒqF W|  j  j d d
 ƒ |  j  j d d ƒ d  S(   Ns     <refsect1 role="properties">
s6       <title role="properties.title">Properties</title>
s       <synopsis>
R   s   </synopsis>
s     </refsect1>
(    (    (    (    (    (   R   R   R%   R,   R-   (   R   R   R(   (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyt   print_synopsis_properties   s    c         C   ss  |  j  j d t j | j ƒ | j f ƒ |  j  j d | j ƒ |  j  j d t j | j ƒ | j | j | j | j | j f ƒ |  j  j d ƒ |  j | | d t ƒ|  j  j d ƒ |  j  j d |  j | j	 t
 ƒ ƒ | j sì | j r|  j  j d ƒ x| | j D]q } |  j  j d	 d ƒ |  j  j d
 | j | j f ƒ |  j  j d |  j | j	 t
 ƒ ƒ |  j  j d d ƒ qWx| | j D]q } |  j  j d	 d ƒ |  j  j d | j | j f ƒ |  j  j d |  j | j	 t
 ƒ ƒ |  j  j d d ƒ q…W|  j  j d ƒ n  t | j ƒ d k r<|  j  j d | j ƒ n  | j r_|  j  j d | j ƒ n  |  j  j d ƒ d  S(   Ns1   <refsect2 role="method" id="gdbus-method-%s.%s">
s!     <title>The %s() method</title>
s]     <indexterm zone="gdbus-method-%s.%s"><primary sortas="%s.%s">%s.%s()</primary></indexterm>
s   <programlisting>
R   s   </programlisting>
s   %s
s   <variablelist role="params">
s   <varlistentry>
sC     <term><literal>IN %s <parameter>%s</parameter></literal>:</term>
s     <listitem>%s</listitem>
s   </varlistentry>
sD     <term><literal>OUT %s <parameter>%s</parameter></literal>:</term>
s   </variablelist>
i    s#   <para role="since">Since %s</para>
s>   <warning><para>The %s() method is deprecated.</para></warning>s   </refsect2>
(    (    (    (    (   R   R   R   R   R   t   name_without_prefixR   t   Falset   expand_parast
   doc_stringR-   R   R   R   R   t   sincet
   deprecated(   R   R   R   R   (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyt   print_method¦   s2    )A# # #	c         C   së  |  j  j d t j | j ƒ | j f ƒ |  j  j d | j ƒ |  j  j d t j | j ƒ | j | j | j | j | j f ƒ |  j  j d ƒ |  j | | d t ƒ|  j  j d ƒ |  j  j d |  j | j	 t
 ƒ ƒ | j r…|  j  j d ƒ x| | j D]q } |  j  j d	 d ƒ |  j  j d
 | j | j f ƒ |  j  j d |  j | j	 t
 ƒ ƒ |  j  j d d ƒ qý W|  j  j d ƒ n  t | j ƒ d k r´|  j  j d | j ƒ n  | j r×|  j  j d | j ƒ n  |  j  j d ƒ d  S(   Ns1   <refsect2 role="signal" id="gdbus-signal-%s.%s">
s!     <title>The "%s" signal</title>
s]     <indexterm zone="gdbus-signal-%s.%s"><primary sortas="%s::%s">%s::%s</primary></indexterm>
s   <programlisting>
R   s   </programlisting>
s   %s
s   <variablelist role="params">
s   <varlistentry>
s@     <term><literal>%s <parameter>%s</parameter></literal>:</term>
s     <listitem>%s</listitem>
s   </varlistentry>
s   </variablelist>
i    s#   <para role="since">Since %s</para>
s>   <warning><para>The "%s" signal is deprecated.</para></warning>s   </refsect2>
(    (    (   R   R   R   R   R   R1   R#   R2   R3   R4   R-   R   R   R   R5   R6   (   R   R   R    R   (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyt   print_signalÁ   s(    )A#	 #	c         C   s@  |  j  j d t j | j ƒ | j f ƒ |  j  j d | j ƒ |  j  j d t j | j ƒ | j | j | j | j | j f ƒ |  j  j d ƒ |  j | | d t ƒ|  j  j d ƒ |  j  j d |  j | j	 t
 ƒ ƒ t | j ƒ d k r	|  j  j d	 | j ƒ n  | j r,|  j  j d
 | j ƒ n  |  j  j d ƒ d  S(   Ns5   <refsect2 role="property" id="gdbus-property-%s.%s">
s#     <title>The "%s" property</title>
s]     <indexterm zone="gdbus-property-%s.%s"><primary sortas="%s:%s">%s:%s</primary></indexterm>
s   <programlisting>
R   s   </programlisting>
s   %s
i    s#   <para role="since">Since %s</para>
s@   <warning><para>The "%s" property is deprecated.</para></warning>s   </refsect2>
(   R   R   R   R   R   R1   R,   R2   R3   R4   R-   R   R5   R6   (   R   R   R(   (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyt   print_property×   s    )A#	c         C   s—   x* |  j  D] } | j | |  j | ƒ } q
 Wx* |  j D] } | j | |  j | ƒ } q7 W| r“ t j d d „  | ƒ } t j d d „  | ƒ } n  | S(   Ns   @[a-zA-Z0-9_]*c         S   s   d |  j  d ƒ d d S(   Ns   <parameter>i    i   s   </parameter>(   t   group(   R   (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyt   <lambda>ì   s    s   %[a-zA-Z0-9_]*c         S   s   d |  j  d ƒ d d S(   Ns
   <constant>i    i   s   </constant>(   R:   (   R   (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyR;   î   s    (   t   expand_member_dict_keyst   replacet   expand_member_dictt   expand_iface_dict_keyst   expand_iface_dictt   ret   sub(   R   R    t   expandParamsAndConstantst   key(    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyt   expandå   s    c         C   s8   |  j  | | ƒ j ƒ  } | j d ƒ s4 d | } n  | S(   Ns   <paras   <para>%s</para>(   RE   t   stript
   startswith(   R   R    RC   (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyR3   ñ   s    c         C   s³  i  |  _  i  |  _ x^|  j D]S} d | j } d t j | j ƒ | j f } | |  j | <xY | j D]N } d | j | j f } d t j | j ƒ | j | j f } | |  j  | <qe WxY | j D]N } d | j | j f } d t j | j ƒ | j | j f } | |  j  | <qÁ WxY | j D]N } d | j | j f } d t j | j ƒ | j | j f } | |  j  | <qWq Wt	 |  j  j
 ƒ  d	 t ƒ|  _ t	 |  j j
 ƒ  d	 t ƒ|  _ d  S(
   Ns   #%ss8   <link linkend="gdbus-interface-%s.top_of_page">%s</link>s   %s.%s()s.   <link linkend="gdbus-method-%s.%s">%s()</link>s   #%s::%ss.   <link linkend="gdbus-signal-%s.%s">"%s"</link>s   #%s:%ss0   <link linkend="gdbus-property-%s.%s">"%s"</link>t   reverse(   R>   R@   R   R   R   R   R   R   R%   t   sortedt   keysR-   R<   R?   (   R   R   RD   t   valueR   R    R(   (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyR   ÷   s(    		%%%c         C   sH  xA|  j  D]6} t d |  j | j f d ƒ |  _ |  j j d d  ƒ |  j j d d! ƒ |  j j d d" ƒ |  j j d d# ƒ |  j j d d$ ƒ |  j j d | j ƒ |  j j d	 d% ƒ |  j j d
 t j | j ƒ | j f ƒ |  j j d t j | j ƒ | j | j f ƒ |  j j d d& ƒ |  j j d d' ƒ |  j j d | j ƒ |  j j d | j	 ƒ |  j j d d( ƒ t
 | j ƒ d k r¨|  j | ƒ n  t
 | j ƒ d k rÍ|  j | ƒ n  t
 | j ƒ d k rò|  j | ƒ n  |  j j d t j | j ƒ ƒ |  j j d d) ƒ |  j j d |  j | j t ƒ ƒ t
 | j ƒ d k rx|  j j d | j ƒ n  | j r›|  j j d | j ƒ n  |  j j d d* ƒ t
 | j ƒ d k r*|  j j d | j ƒ |  j j d d+ ƒ x! | j D] } |  j | | ƒ qùW|  j j d d, ƒ n  t
 | j ƒ d k r¥|  j j d | j ƒ |  j j d d- ƒ x! | j D] } |  j | | ƒ qtW|  j j d d. ƒ n  t
 | j ƒ d k r |  j j d | j ƒ |  j j d d/ ƒ x! | j D] } |  j | | ƒ qïW|  j j d d0 ƒ n  |  j j d ƒ |  j j d ƒ q
 Wd  S(1   Ns	   %s-%s.xmlt   wR
   s'   <?xml version="1.0" encoding="utf-8"?>
sA   <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
sL                  "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
s   ]>
s   <refentry id="gdbus-%s">
s     <refmeta>s]       <refentrytitle role="top_of_page" id="gdbus-interface-%s.top_of_page">%s</refentrytitle>
sa     <indexterm zone="gdbus-interface-%s.top_of_page"><primary sortas="%s">%s</primary></indexterm>
s     </refmeta>s     <refnamediv>s       <refname>%s</refname>s       <refpurpose>%s</refpurpose>s     </refnamediv>i    s/   <refsect1 role="desc" id="gdbus-interface-%s">
s/     <title role="desc.title">Description</title>
s     %s
s%     <para role="since">Since %s</para>
s?   <warning><para>The %s interface is deprecated.</para></warning>s   </refsect1>
s0   <refsect1 role="details" id="gdbus-methods-%s">
s5     <title role="details.title">Method Details</title>
s0   <refsect1 role="details" id="gdbus-signals-%s">
s5     <title role="details.title">Signal Details</title>
s3   <refsect1 role="details" id="gdbus-properties-%s">
s7     <title role="details.title">Property Details</title>
s   </refentry>
s   
(    (    (    (    (    (    (    (    (    (    (    (    (    (    (    (    (    (   R   t   openR   R   R   R   R   R   R1   t   doc_string_briefR   R   R.   R   R/   R%   R0   R3   R4   R-   R5   R6   R7   R8   R9   (   R   R   R   R    (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyt   generate  sd    ")/ #	(   t   __name__t
   __module__R	   R   R#   R,   R.   R/   R0   R7   R8   R9   RE   R3   R   RO   (    (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyR       s   		(														(    (   t   sysRA   R
   R    R   R   R   R   (    (    (    s.   /usr/share/glib-2.0/codegen/codegen_docbook.pyt   <module>   s   