
    cV	                         d Z dZddlZddlmZmZ  ej                  d      Z ej                  d      Zde	dee	ee	   f   fd	Z
y)
zXML utilities.

This module contains useful functions for parsing and using XML data. For the
moment, there is only one function that can parse the data inside a processing
instruction and return a Python dictionary.




zrestructuredtext en    N)DictOptionalz([\w\-\.]+)="([^"]+)"z([\w\-\.]+)='([^']+)'pi_datareturnc                     i }| j                         D ]a  }t        j                  |      }t        j                  |      }|r|j	                         \  }}n|r|j	                         \  }}n|d}}|||<   c |S )a  
    Utility function that parses the data contained in an XML
    processing instruction and returns a dictionary of keywords and their
    associated values (most of the time, the processing instructions contain
    data like ``keyword="value"``, if a keyword is not associated to a value,
    for example ``keyword``, it will be associated to ``None``).

    :param pi_data: data contained in an XML processing instruction.
    :type pi_data: unicode

    :returns: Dictionary of the keywords (Unicode strings) associated to
              their values (Unicode strings) as they were defined in the
              data.
    :rtype: dict
    N)splitRE_DOUBLE_QUOTEmatchRE_SIMPLE_QUOTEgroups)r   resultseltdouble_matchsimple_matchkwdvals          9/usr/lib/python3/dist-packages/logilab/common/xmlutils.pyparse_pi_datar   %   s      G}} 
&,,S1&,,S1#**,HC#**,HCDC
 N    )__doc____docformat__retypingr   r   compiler	   r   strr    r   r   <module>r      sZ   $	 & 	 !"**56"**563 4Xc](:#; r   