U
    º±K^Q  ã                   @   s4   d dl mZ d dlmZ G dd„ deƒZdd„ ZdS )é    )ÚParserCreate)ÚIntrospectionParserExceptionc                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )Ú_Parser©ÚmapÚin_ifaceÚ	in_methodÚsigc                 C   s   i | _ d| _d| _d| _d S )NÚ r   )Úself© r   ú?/usr/lib/python3/dist-packages/dbus/_expat_introspect_parser.pyÚ__init__!   s    z_Parser.__init__c                 C   s0   t ddƒ}d|_| j|_| j|_| |¡ | jS )NzUTF-8ú T)r   Zbuffer_textÚStartElementHandlerÚEndElementHandlerZParser   )r   ÚdataÚparserr   r   r   Úparse'   s    

z_Parser.parsec                 C   sn   | j s | jsj|dkrj|d | _ nJ| js:|dkr:|d | _n0| jrj|dkrj| dd¡dkrj|  j|d 7  _d S )NÚ	interfaceÚnameÚmethodÚargÚ	directionÚinÚtype)r   r   Úgetr	   )r   r   Z
attributesr   r   r   r   /   s    z_Parser.StartElementHandlerc                 C   sR   | j rN| js|dkrd| _ n2| jrN|dkrN| j| j| j d | j < d| _d| _d S )Nr   r
   r   Ú.)r   r   r	   r   )r   r   r   r   r   r   :   s    z_Parser.EndElementHandlerN)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r   r   r   r   r   r   r   r   r      s
   r   c              
   C   sH   zt ƒ  | ¡W S  tk
rB } ztd|j|f ƒ‚W 5 d}~X Y nX dS )aß  Return a dict mapping ``interface.method`` strings to the
    concatenation of all their 'in' parameters, and mapping
    ``interface.signal`` strings to the concatenation of all their
    parameters.

    Example output::

        {
            'com.example.SignalEmitter.OneString': 's',
            'com.example.MethodImplementor.OneInt32Argument': 'i',
        }

    :Parameters:
        `data` : str
            The introspection XML. Must be an 8-bit string of UTF-8.
    z%s: %sN)r   r   Ú	Exceptionr   Ú	__class__)r   Úer   r   r   Úprocess_introspection_dataC   s    r%   N)Zxml.parsers.expatr   Zdbus.exceptionsr   Úobjectr   r%   r   r   r   r   Ú<module>   s   $