o
    ¹i  ã                   @   s8   d dl Z d dlmZmZ dgZddiZG dd„ dƒZdS )é    N)ÚescapeÚ	quoteattrÚ	XMLWriterúz&#13;c                   @   sn   e Zd Zddd„Zdd„ ZeeƒZdd„ Zd	d
„ Zddd„Z	i fdd„Z
ddd„Zdd„ Zdd„ Zdd„ ZdS )r   Né   c           
      C   sZ   |pd}t  |¡\}}}}	|	|ƒ | _}|r| d| ¡ g | _|| _|p&i | _d| _d S )Nzutf-8z#<?xml version="1.0" encoding="%s"?>T)ÚcodecsÚlookupÚstreamÚwriteÚelement_stackÚnmÚextra_nsÚclosed)
Úselfr	   Únamespace_managerÚencodingÚdeclr   ÚencoderÚdecoderÚstream_readerÚstream_writer© r   ú_/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/rdflib/plugins/serializers/xmlwriter.pyÚ__init__
   s   

zXMLWriter.__init__c                 C   s   dt | jƒ S )Nz  )Úlenr   ©r   r   r   r   Ú__get_indent   s   zXMLWriter.__get_indentc                 C   s    | j sd| _ | j d¡ d S d S )NTú>)r   r	   r
   r   r   r   r   Ú__close_start_tag   s   þzXMLWriter.__close_start_tagc                 C   sP   |   ¡  | jj}|dƒ || jƒ |d|  |¡ ƒ | j |¡ d| _d| _d S )NÚ
z<%sF)	Ú_XMLWriter__close_start_tagr	   r
   ÚindentÚqnamer   Úappendr   Úparent)r   Úurir
   r   r   r   Úpush   s   

zXMLWriter.pushc                 C   sl   | j  ¡ }|r||ksJ ‚| jj}| jsd| _|dƒ n| jr(|dƒ || jƒ |d|  |¡ ƒ d| _d S )NTz/>r   z</%s>)r   Úpopr	   r
   r   r$   r!   r"   )r   r%   Útopr
   r   r   r   r'   )   s   



zXMLWriter.popc                 C   s>   |   |¡ | ¡ D ]
\}}|  ||¡ q	|  |¡ |  ¡  dS )z3Utility method for adding a complete simple elementN)r&   ÚitemsÚ	attributeÚtextr'   )r   r%   ÚcontentÚ
attributesÚkÚvr   r   r   Úelement8   s
   

zXMLWriter.elementc                 C   s’   |s| j  ¡ }| jj}|dƒ |D ]\}}|r |d||f ƒ q|| jvr+|d| ƒ q| j ¡ D ]\}}|r@|d||f ƒ q1|d| ƒ q1d S )Nr   z  xmlns:%s="%s"
z  xmlns="%s"
)r   Ú
namespacesr	   r
   r   r)   )r   r1   r
   ÚprefixÚ	namespacer   r   r   r1   @   s   

€üzXMLWriter.namespacesc                 C   s&   | j j}|d|  |¡t|ƒf ƒ d S )Nz %s=%s)r	   r
   r"   r   )r   r%   Úvaluer
   r   r   r   r*   S   s   zXMLWriter.attributec                 C   s^   |   ¡  d|v r$d|v r$d|vr$| j d¡ | j |¡ | j d¡ d S | j t|tƒ¡ d S )Nú<r   z]]>z	<![CDATA[)r    r	   r
   r   ÚESCAPE_ENTITIES)r   r+   r   r   r   r+   W   s   zXMLWriter.textc                 C   sd   | j  ¡ D ]&\}}| |¡r+|dkr!d ||t|ƒd… g¡  S |t|ƒd…   S q| j |¡S )zZCompute qname for a uri using our extra namespaces,
        or the given namespace managerÚ ú:N)r   r)   Ú
startswithÚjoinr   r   Úqname_strict)r   r%   ÚpreÚnsr   r   r   r"   `   s   
üzXMLWriter.qname)Nr   N)N)Ú__name__Ú
__module__Ú__qualname__r   Ú_XMLWriter__get_indentÚpropertyr!   r    r&   r'   r0   r1   r*   r+   r"   r   r   r   r   r   	   s    



	)r   Úxml.sax.saxutilsr   r   Ú__all__r6   r   r   r   r   r   Ú<module>   s
    