o
    ȷe                     @   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   K/var/www/ideatree/venv/lib/python3.10/site-packages/xlsxwriter/xmlwriter.py__init__   s   
zXMLwriter.__init__c                 C   s   || _ d| _d S )NF)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_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   <   |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      
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_tagD   s   zXMLwriter._xml_end_tagc                 C   r   Nr   z<%s/>r   r    r   r   r   _xml_empty_tagH   r&   zXMLwriter._xml_empty_tagc                 C   r'   r,   r   r    r   r   r   _xml_empty_tag_unencodedP   r)   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"   end_tagr#   r$   r   r   r   _xml_data_elementY   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_elementd   
   
zXMLwriter._xml_string_elementc                 C   sN   d}|D ]\}}|  |}|d||f 7 }q| |}| jd||f  d S )Nr5   r   z<si><t%s>%s</t></si>r/   r
   stringr"   r7   r#   r$   r   r   r   _xml_si_elementn   s   

zXMLwriter._xml_si_elementc                 C   r*   )Nz<si>%s</si>r   )r
   r;   r   r   r   _xml_rich_si_elementz   s   zXMLwriter._xml_rich_si_elementc                 C   r4   )Nr5   r   z<c%s><v>%.16G</v></c>r   )r
   numberr"   r7   r#   r$   r   r   r   _xml_number_element   r9   zXMLwriter._xml_number_elementc                 C   sR   d}|D ]\}}|  |}|d||f 7 }q| jd|| || |f  d S )Nr5   r   z<c%s><f>%s</f><v>%s</v></c>)r   r   r   r0   )r
   formularesultr"   r7   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 )Nr5   z xml:space="preserve"r   z+<c%s t="inlineStr"><is><t%s>%s</t></is></c>r/   )r
   r;   preserver"   r7   t_attrr#   r$   r   r   r   _xml_inline_string   s   


zXMLwriter._xml_inline_stringc                 C   r4   )Nr5   r   z"<c%s t="inlineStr"><is>%s</is></c>r   r:   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 w |dd}|dd}|dd}|dd}|d	d
}|S )N&&amp;"z&quot;<&lt;>&gt;
z&#xA;r   search	TypeErrorreplace)r
   	attributer   r   r   r      s   zXMLwriter._escape_attributesc                 C   sV   z| j |s
|W S W n ty   | Y S w |dd}|dd}|dd}|S )NrG   rH   rJ   rK   rL   rM   rO   )r
   r1   r   r   r   r0      s   zXMLwriter._escape_dataN)__name__
__module____qualname____doc__r   r   r   r   r   r%   r(   r+   r-   r.   r3   r8   r<   r=   r?   rB   rE   rF   r   r0   r   r   r   r   r      s,    			

r   )r   ior   objectr   r   r   r   r   <module>   s   