o
    ,h                     @   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
   J/var/www/html/rh/venv/lib/python3.10/site-packages/xlsxwriter/xmlwriter.py__init__   s   
zXMLwriter.__init__c                 C   s   || _ d| _d S r   r   )r	   
filehandler
   r
   r   _set_filehandle"   s   
zXMLwriter._set_filehandlec                 C   s4   t |trd| _|| _d S 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 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   F   |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:      
zXMLwriter._xml_start_tagc                 C   <   |D ]\}}|d| d| d7 }q| j d| d d S r   r   r#   r
   r
   r   _xml_start_tag_unencodedB      z"XMLwriter._xml_start_tag_unencodedc                 C      | j d| d d S )N</r    r   )r	   r$   r
   r
   r   _xml_end_tagK   s   zXMLwriter._xml_end_tagc                 C   r   Nr   r   r   r   z/>r!   r#   r
   r
   r   _xml_empty_tagO   r)   zXMLwriter._xml_empty_tagc                 C   r*   r0   r   r#   r
   r
   r   _xml_empty_tag_unencodedW   r,   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%   end_tagr&   r'   r
   r
   r   _xml_data_element`   s   


$zXMLwriter._xml_data_elementc                 C   P   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   
   
zXMLwriter._xml_string_elementc                 C   sZ   d}|D ]\}}|  |}|d| d| d7 }q| |}| jd| d| d d S )Nr9   r   r   r   z<si><tr    z	</t></si>r"   r3   r   r   r	   stringr%   r=   r&   r'   r
   r
   r   _xml_si_elementw   s   

zXMLwriter._xml_si_elementc                 C   r-   )Nz<si>z</si>r   )r	   rB   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 )	Nr9   r   r   r   r:   z><v>z.16Gr;   r!   )r	   numberr%   r=   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 )	Nr9   r   r   r   r:   z><f>z</f><v>r;   r@   )r	   formularesultr%   r=   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 )
Nr9   z xml:space="preserve"r   r   r   r:   z t="inlineStr"><is><tr    z</t></is></c>r@   )r	   rB   preserver%   r=   t_attrr&   r'   r
   r
   r   _xml_inline_string   s   

$zXMLwriter._xml_inline_stringc                 C   r8   )Nr9   r   r   r   r:   z t="inlineStr"><is>z	</is></c>r!   rA   r
   r
   r   _xml_rich_inline_string   r?   z!XMLwriter._xml_rich_inline_stringc                 C   s\   z
t |s	|W S W n ty   | Y S w |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   sL   z
t |s	|W S W n ty   | Y S w |dddddd}|S )NrN   rO   r   rP   r    rQ   rS   )r	   r5   r
   r
   r   r3      s   
zXMLwriter._escape_datac                 C   sP   zt d| } W n ty   |  Y S w tdd | } | dddd} | S )Nz_x005F\1c                 S   s   dt | dddS )N_x   04X_)ordgroup)matchr
   r
   r   <lambda>   s    z6XMLwriter._escape_control_characters.<locals>.<lambda>u   ￾_xFFFE_u   ￿_xFFFF_)re_control_chars_1subrV   re_control_chars_2rW   )r5   r
   r
   r   r4      s   z$XMLwriter._escape_control_charactersN)__name__
__module____qualname____doc__r   r   r   r   r   r(   r+   r/   r1   r2   r7   r>   rC   rD   rF   rI   rL   rM   r"   r3   staticmethodr4   r
   r
   r
   r   r      s0    
		


r   )reior   compilerc   re   rT   r   r
   r
   r
   r   <module>   s   


