a
    èÞJbÞ  ã                   @   s:   d dl mZ d dlmZ d dlmZ G dd„ dejƒZdS )é   )Ú	xmlwriter)Úpreserve_whitespace)Úxl_rowcol_to_cellc                       s”   e Zd ZdZ‡ fdd„Zg fdd„Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS ) ÚCommentsz=
    A class for writing the Excel XLSX Comments file.


    c                    s   t t| ƒ ¡  i | _dS )z
        Constructor.

        N)Úsuperr   Ú__init__Ú
author_ids)Úself©Ú	__class__© ú2lib/python3.9/site-packages/xlsxwriter/comments.pyr      s    zComments.__init__c                 C   s:   |   ¡  |  ¡  |  |¡ |  |¡ |  d¡ |  ¡  d S )NÚcomments)Z_xml_declarationÚ_write_commentsÚ_write_authorsÚ_write_comment_listÚ_xml_end_tagZ
_xml_close)r	   Zcomments_datar   r   r   Ú_assemble_xml_file*   s    


zComments._assemble_xml_filec                 C   s   d}d|fg}|   d|¡ d S )Nz9http://schemas.openxmlformats.org/spreadsheetml/2006/mainÚxmlnsr   )Ú_xml_start_tag)r	   r   Ú
attributesr   r   r   r   D   s    
zComments._write_commentsc                 C   s\   d}|   d¡ |D ]:}|d }|d ur|| jvr|| j|< |d7 }|  |¡ q|  d¡ d S )Né    Zauthorsé   r   )r   r   Ú_write_authorr   )r	   Úcomment_dataZauthor_countÚcommentÚauthorr   r   r   r   L   s    

zComments._write_authorsc                 C   s   |   d|¡ d S )Nr   )Ú_xml_data_element)r	   Údatar   r   r   r   _   s    zComments._write_authorc                 C   sŒ   |   d¡ |D ]n}|d }|d }|d }|d }|d }|d }|d }	d }
|d ur`| j| }
|||	f}|  ||||
|¡ q|  d¡ d S )	NZcommentListr   r   é   r   é   é   é   )r   r   Ú_write_commentr   )r	   r   r   ÚrowÚcolÚtextr   Ú	font_nameÚ	font_sizeÚfont_familyÚ	author_idÚfontr   r   r   r   c   s    


zComments._write_comment_listc                 C   sP   t ||ƒ}d|fg}|d ur*| d|f¡ |  d|¡ |  ||¡ |  d¡ d S )NÚrefZauthorIdr   )r   Úappendr   Ú_write_textr   )r	   r$   r%   r&   r*   r+   r,   r   r   r   r   r#   {   s    

zComments._write_commentc                 C   s$   |   d¡ |  ||¡ |  d¡ d S )Nr&   )r   Ú_write_text_rr   ©r	   r&   r+   r   r   r   r.   ‹   s    
zComments._write_textc                 C   s,   |   d¡ |  |¡ |  |¡ |  d¡ d S )NÚr)r   Ú_write_r_prÚ_write_text_tr   r0   r   r   r   r/   ”   s    


zComments._write_text_rc                 C   s(   g }t |ƒr| d¡ |  d||¡ d S )N)z	xml:spaceZpreserveÚt)r   r-   r   )r	   r&   r   r   r   r   r3       s    
zComments._write_text_tc                 C   sJ   |   d¡ |  |d ¡ |  ¡  |  |d ¡ |  |d ¡ |  d¡ d S )NZrPrr   r   r   )r   Ú	_write_szÚ_write_colorÚ_write_r_fontÚ_write_familyr   )r	   r+   r   r   r   r2   ©   s    
zComments._write_r_prc                 C   s   d|fg}|   d|¡ d S )NÚvalZsz©Z_xml_empty_tag)r	   r(   r   r   r   r   r5   »   s    
zComments._write_szc                 C   s   dg}|   d|¡ d S )N)ZindexedéQ   Zcolorr:   )r	   r   r   r   r   r6   Á   s    zComments._write_colorc                 C   s   d|fg}|   d|¡ d S )Nr9   ZrFontr:   )r	   r'   r   r   r   r   r7   Ç   s    
zComments._write_r_fontc                 C   s   d|fg}|   d|¡ d S )Nr9   Zfamilyr:   )r	   r)   r   r   r   r   r8   Í   s    
zComments._write_family)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r#   r.   r/   r3   r2   r5   r6   r7   r8   Ú__classcell__r   r   r
   r   r      s    		r   N)Ú r   Zutilityr   r   Z	XMLwriterr   r   r   r   r   Ú<module>	   s   