o
    b                      @   s0   d dl Z 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   S/var/www/secure340b-portal/env/lib/python3.10/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   s4   t |trd| _|| _d S d| _t|dd| _d S )NFTwzutf-8)
isinstancer   r	   r   codecs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_declaration0   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_tag5      
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_tagF   s   zXMLwriter._xml_end_tagc                 C   r   Nr   z<%s/>r   r    r   r   r   _xml_empty_tagJ   r&   zXMLwriter._xml_empty_tagc                 C   r'   r,   r   r    r   r   r   _xml_empty_tag_unencodedR   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"   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_elementf   
   
zXMLwriter._xml_string_elementc                 C   sN   d}|D ]\}}|  |}|d||f 7 }q| |}| jd||f  d S )Nr4   r   z<si><t%s>%s</t></si>r/   r   stringr"   r6   r#   r$   r   r   r   _xml_si_elementp   s   

zXMLwriter._xml_si_elementc                 C   r*   )Nz<si>%s</si>r   )r   r:   r   r   r   _xml_rich_si_element|   s   zXMLwriter._xml_rich_si_elementc                 C   r3   )Nr4   r   z<c%s><v>%.16G</v></c>r   )r   numberr"   r6   r#   r$   r   r   r   _xml_number_element   r8   zXMLwriter._xml_number_elementc                 C   sR   d}|D ]\}}|  |}|d||f 7 }q| jd|| || |f  d S )Nr4   r   z<c%s><f>%s</f><v>%s</v></c>)r   r   r   r0   )r   Zformularesultr"   r6   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 )Nr4   z xml:space="preserve"r   z+<c%s t="inlineStr"><is><t%s>%s</t></is></c>r/   )r   r:   preserver"   r6   Zt_attrr#   r$   r   r   r   _xml_inline_string   s   


zXMLwriter._xml_inline_stringc                 C   r3   )Nr4   r   z"<c%s t="inlineStr"><is>%s</is></c>r   r9   r   r   r   _xml_rich_inline_string   s   

z!XMLwriter._xml_rich_inline_stringc                 C   sx   z| j |s
|W S W n ty   | Y S w tdd|}tdd|}tdd|}tdd|}td	d
|}|S )N[&]&amp;z["]z&quot;[<]&lt;[>]&gt;z[
]z&#xA;r   search	TypeErrorr   sub)r   	attributer   r   r   r      s   zXMLwriter._escape_attributesc                 C   s\   z| j |s
|W S W n ty   | Y S w tdd|}tdd|}tdd|}|S )NrD   rE   rF   rG   rH   rI   rJ   )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.   r2   r7   r;   r<   r>   r@   rB   rC   r   r0   r   r   r   r   r      s,    			

r   )r   r   compatibilityr   objectr   r   r   r   r   <module>   s   
