o
    ]oi?                     @   sF   d dl Z d dlmZ e dZe dZe dZG dd de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
   \/var/www/html/kuke-dev/django-kuke/venv/lib/python3.10/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   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_close-   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_declaration2   s   zXMLwriter._xml_declarationc                 C   <   |D ]\}}|  |}|d||f 7 }q| jd|  d S N %s="%s"z<%s>_escape_attributesr   r   r	   tag
attributeskeyvaluer
   r
   r   _xml_start_tag6      
zXMLwriter._xml_start_tagc                 C   2   |D ]\}}|d||f 7 }q| j d|  d S r   r   r   r
   r
   r   _xml_start_tag_unencoded>      z"XMLwriter._xml_start_tag_unencodedc                 C      | j d|  d S )Nz</%s>r   )r	   r   r
   r
   r   _xml_end_tagG   s   zXMLwriter._xml_end_tagc                 C   r   Nr   z<%s/>r   r   r
   r
   r   _xml_empty_tagK   r$   zXMLwriter._xml_empty_tagc                 C   r%   r*   r   r   r
   r
   r   _xml_empty_tag_unencodedS   r'   z"XMLwriter._xml_empty_tag_unencodedc                 C   sZ   |}|D ]\}}|  |}|d||f 7 }q| |}| |}| jd|||f  d S )Nr   z<%s>%s</%s>)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   D   d}|D ]\}}|  |}|d||f 7 }q| jd||f  d S )N r   z<c%s t="s"><v>%d</v></c>r   )r	   indexr    attrr!   r"   r
   r
   r   _xml_string_elementi   
   
zXMLwriter._xml_string_elementc                 C   sN   d}|D ]\}}|  |}|d||f 7 }q| |}| jd||f  d S )Nr2   r   z<si><t%s>%s</t></si>r   r-   r   r   r	   stringr    r4   r!   r"   r
   r
   r   _xml_si_elements   s   

zXMLwriter._xml_si_elementc                 C   r(   )Nz<si>%s</si>r   )r	   r9   r
   r
   r   _xml_rich_si_element   s   zXMLwriter._xml_rich_si_elementc                 C   r1   )Nr2   r   z<c%s><v>%.16G</v></c>r   )r	   numberr    r4   r!   r"   r
   r
   r   _xml_number_element   r6   zXMLwriter._xml_number_elementc                 C   sR   d}|D ]\}}|  |}|d||f 7 }q| jd|| || |f  d S )Nr2   r   z<c%s><f>%s</f><v>%s</v></c>)r   r   r   r-   )r	   Zformularesultr    r4   r!   r"   r
   r
   r   _xml_formula_element   s   
zXMLwriter._xml_formula_elementc                 C   s\   d}d}|rd}|D ]\}}|  |}|d||f 7 }q
| |}| jd|||f  d S )Nr2   z xml:space="preserve"r   z+<c%s t="inlineStr"><is><t%s>%s</t></is></c>r7   )r	   r9   Zpreserver    r4   Zt_attrr!   r"   r
   r
   r   _xml_inline_string   s   

zXMLwriter._xml_inline_stringc                 C   r1   )Nr2   r   z"<c%s t="inlineStr"><is>%s</is></c>r   r8   r
   r
   r   _xml_rich_inline_string   r6   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;"z&quot;<&lt;>&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 )NrB   rC   rE   rF   rG   rH   rJ   )r	   r/   r
   r
   r   r-      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 S )Nz_x%04X_   )ordgroup)matchr
   r
   r   <lambda>   s    z6XMLwriter._escape_control_characters.<locals>.<lambda>u   ￾Z_xFFFE_u   ￿Z_xFFFF_)re_control_chars_1subrM   re_control_chars_2rN   )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   r5   r:   r;   r=   r?   r@   rA   r   r-   staticmethodr.   r
   r
   r
   r   r      s0    			


r   )	reior   compilerU   rW   rK   objectr   r
   r
   r
   r   <module>   s   


