a
    èÞJbÉ  ã                   @   s(   d dl Z d dlmZ G dd„ deƒZdS )é    N)ÚStringIOc                   @   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d*S )+Ú	XMLwriterz#
    Simple XML writer class.

    c                 C   s   d | _ t d¡| _d| _d S )Nz["&<>
]F)ÚfhÚreÚcompileÚescapesÚinternal_fh©Úself© r   ú3lib/python3.9/site-packages/xlsxwriter/xmlwriter.pyÚ__init__   s    zXMLwriter.__init__c                 C   s   || _ d| _d S )NF)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_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_declaration.   s    ÿzXMLwriter._xml_declarationc                 C   s<   |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_tag3   s    
zXMLwriter._xml_start_tagc                 C   s2   |D ]\}}|d||f 7 }q| j  d| ¡ d S r   r   r   r   r   r   Ú_xml_start_tag_unencoded;   s    z"XMLwriter._xml_start_tag_unencodedc                 C   s   | j  d| ¡ d S )Nz</%s>r   )r
   r   r   r   r   Ú_xml_end_tagD   s    zXMLwriter._xml_end_tagc                 C   s<   |D ]"\}}|   |¡}|d||f 7 }q| j d| ¡ d S ©Nr   z<%s/>r   r   r   r   r   Ú_xml_empty_tagH   s    
zXMLwriter._xml_empty_tagc                 C   s2   |D ]\}}|d||f 7 }q| j  d| ¡ d S r&   r   r   r   r   r   Ú_xml_empty_tag_unencodedP   s    z"XMLwriter._xml_empty_tag_unencodedc                 C   sP   |}|D ]"\}}|   |¡}|d||f 7 }q|  |¡}| j d|||f ¡ d S )Nr   z<%s>%s</%s>©r   Ú_escape_datar   r   )r
   r   Údatar    Zend_tagr!   r"   r   r   r   Ú_xml_data_elementY   s    

zXMLwriter._xml_data_elementc                 C   sD   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_elementd   s
    
zXMLwriter._xml_string_elementc                 C   sN   d}|D ]"\}}|   |¡}|d||f 7 }q|  |¡}| j d||f ¡ d S )Nr-   r   z<si><t%s>%s</t></si>r)   ©r
   Ústringr    r/   r!   r"   r   r   r   Ú_xml_si_elementn   s    

zXMLwriter._xml_si_elementc                 C   s   | j  d| ¡ d S )Nz<si>%s</si>r   )r
   r2   r   r   r   Ú_xml_rich_si_elementz   s    zXMLwriter._xml_rich_si_elementc                 C   sD   d}|D ]"\}}|   |¡}|d||f 7 }q| j d||f ¡ d S )Nr-   r   z<c%s><v>%.16G</v></c>r   )r
   Znumberr    r/   r!   r"   r   r   r   Ú_xml_number_element   s
    
zXMLwriter._xml_number_elementc                 C   sR   d}|D ]"\}}|   |¡}|d||f 7 }q| j d||  |¡|  |¡f ¡ d S )Nr-   r   z<c%s><f>%s</f><v>%s</v></c>)r   r   r   r*   )r
   ZformulaÚresultr    r/   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 )Nr-   z xml:space="preserve"r   z+<c%s t="inlineStr"><is><t%s>%s</t></is></c>r)   )r
   r2   Zpreserver    r/   Zt_attrr!   r"   r   r   r   Ú_xml_inline_string•   s    

ÿzXMLwriter._xml_inline_stringc                 C   sD   d}|D ]"\}}|   |¡}|d||f 7 }q| j d||f ¡ d S )Nr-   r   z"<c%s t="inlineStr"><is>%s</is></c>r   r1   r   r   r   Ú_xml_rich_inline_string§   s    
ÿz!XMLwriter._xml_rich_inline_stringc                 C   sn   z| j  |¡s|W S W n ty,   | Y S 0 | dd¡}| dd¡}| dd¡}| dd¡}| d	d
¡}|S )Nú&ú&amp;ú"z&quot;ú<ú&lt;ú>ú&gt;Ú
z&#xA;©r   ÚsearchÚ	TypeErrorÚreplace)r
   Z	attributer   r   r   r   ²   s    

zXMLwriter._escape_attributesc                 C   sV   z| j  |¡s|W S W n ty,   | Y S 0 | dd¡}| dd¡}| dd¡}|S )Nr:   r;   r=   r>   r?   r@   rB   )r
   r+   r   r   r   r*   Â   s    

zXMLwriter._escape_dataN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r#   r$   r%   r'   r(   r,   r0   r3   r4   r5   r7   r8   r9   r   r*   r   r   r   r   r      s*   			

r   )r   Úior   Úobjectr   r   r   r   r   Ú<module>   s   