U
    7h                     @   sD   d dl Z d dlmZ e dZe dZe dZG dd dZdS )    N)StringIOz(_x[0-9a-fA-F]{4}_)z([\x00-\x08\x0b-\x1f])z["&<>
]c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zg fddZ	g fddZ
dd Zg fddZg fddZg fddZg fddZg fddZdd Zg fddZg fd d!Zg fd"d#Zg fd$d%Zd&d' Zd(d) Zed*d+ Zd,S )-	XMLwriterz#
    Simple XML writer class.

    c                 C   s   d | _ d| _d S NFfhinternal_fhself r
   N/var/www/formularioweb/env/lib/python3.8/site-packages/xlsxwriter/xmlwriter.py__init__   s    zXMLwriter.__init__c                 C   s   || _ d| _d S r   r   )r	   Z
filehandler
   r
   r   _set_filehandle"   s    zXMLwriter._set_filehandlec                 C   s2   t |trd| _|| _nd| _t|ddd| _d S )NFTwzutf-8)encoding)
isinstancer   r   r   open)r	   filenamer
   r
   r   _set_xml_writer'   s
    
zXMLwriter._set_xml_writerc                 C   s   | j r| j  d S )N)r   r   closer   r
   r
   r   
_xml_close1   s    zXMLwriter._xml_closec                 C   s   | j d d S )Nz8<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
r   writer   r
   r
   r   _xml_declaration6   s    zXMLwriter._xml_declarationc                 C   sF   |D ](\}}|  |}|d| d| d7 }q| jd| d d S N =""<>_escape_attributesr   r   r	   tag
attributeskeyvaluer
   r
   r   _xml_start_tag:   s    
zXMLwriter._xml_start_tagc                 C   s<   |D ]\}}|d| d| d7 }q| j d| d d S r   r   r!   r
   r
   r   _xml_start_tag_unencodedB   s    z"XMLwriter._xml_start_tag_unencodedc                 C   s   | j d| d d S )N</r   r   )r	   r"   r
   r
   r   _xml_end_tagK   s    zXMLwriter._xml_end_tagc                 C   sF   |D ](\}}|  |}|d| d| d7 }q| jd| d d S Nr   r   r   r   z/>r   r!   r
   r
   r   _xml_empty_tagO   s    
zXMLwriter._xml_empty_tagc                 C   s<   |D ]\}}|d| d| d7 }q| j d| d d S r*   r   r!   r
   r
   r   _xml_empty_tag_unencodedW   s    z"XMLwriter._xml_empty_tag_unencodedc              	   C   sj   |}|D ](\}}|  |}|d| d| d7 }q| |}| |}| jd| d| d| d d S )Nr   r   r   r   r   r(   )r    _escape_data_escape_control_charactersr   r   )r	   r"   datar#   Zend_tagr$   r%   r
   r
   r   _xml_data_element`   s    


zXMLwriter._xml_data_elementc                 C   sP   d}|D ](\}}|  |}|d| d| d7 }q| jd| d| d d S )N r   r   r   <cz
 t="s"><v></v></c>r   )r	   indexr#   attrr$   r%   r
   r
   r   _xml_string_elementm   s
    
zXMLwriter._xml_string_elementc                 C   sZ   d}|D ](\}}|  |}|d| d| d7 }q| |}| jd| d| d d S )Nr1   r   r   r   z<si><tr   z	</t></si>r    r-   r   r   r	   stringr#   r5   r$   r%   r
   r
   r   _xml_si_elementw   s    

zXMLwriter._xml_si_elementc                 C   s   | j d| d d S )Nz<si>z</si>r   )r	   r9   r
   r
   r   _xml_rich_si_element   s    zXMLwriter._xml_rich_si_elementc                 C   sR   d}|D ](\}}|  |}|d| d| d7 }q| jd| d|dd d S )	Nr1   r   r   r   r2   z><v>z.16Gr3   r   )r	   numberr#   r5   r$   r%   r
   r
   r   _xml_number_element   s
    
zXMLwriter._xml_number_elementc              	   C   sj   d}|D ](\}}|  |}|d| d| d7 }q| |}| |}| jd| d| d| d d S )	Nr1   r   r   r   r2   z><f>z</f><v>r3   r7   )r	   Zformularesultr#   r5   r$   r%   r
   r
   r   _xml_formula_element   s    


zXMLwriter._xml_formula_elementc              	   C   sl   d}d}|rd}|D ](\}}|  |}|d| d| d7 }q| |}| jd| d| d| d	 d S )
Nr1   z xml:space="preserve"r   r   r   r2   z t="inlineStr"><is><tr   z</t></is></c>r7   )r	   r9   Zpreserver#   r5   Zt_attrr$   r%   r
   r
   r   _xml_inline_string   s    

zXMLwriter._xml_inline_stringc                 C   sP   d}|D ](\}}|  |}|d| d| d7 }q| jd| d| d d S )Nr1   r   r   r   r2   z t="inlineStr"><is>z	</is></c>r   r8   r
   r
   r   _xml_rich_inline_string   s
    
z!XMLwriter._xml_rich_inline_stringc                 C   s^   zt |s|W S W n tk
r,   | Y S X |ddddddddd	d
}|S )N&&amp;r   z&quot;r   &lt;r   &gt;
z&#xA;xml_escapessearch	TypeErrorreplace)r	   	attributer
   r
   r   r       s(    


    zXMLwriter._escape_attributesc                 C   sN   zt |s|W S W n tk
r,   | Y S X |dddddd}|S )NrB   rC   r   rD   r   rE   rG   )r	   r/   r
   r
   r   r-      s    


zXMLwriter._escape_datac                 C   sR   zt d| } W n tk
r(   |  Y S X tdd | } | dddd} | S )Nz_x005F\1c                 S   s   dt | dddS )NZ_x   Z04X_)ordgroup)matchr
   r
   r   <lambda>       z6XMLwriter._escape_control_characters.<locals>.<lambda>u   ￾Z_xFFFE_u   ￿Z_xFFFF_)re_control_chars_1subrJ   re_control_chars_2rK   )r/   r
   r
   r   r.      s    
 z$XMLwriter._escape_control_charactersN)__name__
__module____qualname____doc__r   r   r   r   r   r&   r'   r)   r+   r,   r0   r6   r:   r;   r=   r?   r@   rA   r    r-   staticmethodr.   r
   r
   r
   r   r      s.   
		


r   )reior   compilerT   rV   rH   r   r
   r
   r
   r   <module>   s
   


