U
    rÎ·hÜ  ã                   @   sB   d dl Z d dlZd dlmZ e  d¡Zdd„ ZG dd„ deƒZdS )é    N)ÚHeaderFooterz[\\*?:/\[\]]c                    s|   ‡ fdd„| D ƒ}|rxd  | ¡} t dt ˆ ¡› d�tj¡}| | ¡}|rxdd„ |D ƒ}d}|rht|ƒ}d ˆ |d	 ¡‰ ˆ S )
z˜
    Naive check to see whether name already exists.
    If name does exist suggest a name using an incrementer
    Duplicates are case insensitive
    c                    s    g | ]}|  ¡ ˆ   ¡ kr|‘qS © )Úlower)Ú.0Ún©Úvaluer   ú;/tmp/pip-unpacked-wheel-49e_hfpc/openpyxl/workbook/child.pyÚ
<listcomp>   s      z(avoid_duplicate_name.<locals>.<listcomp>ú,z
(?P<title>z)(?P<count>\d*),?c                 S   s    g | ]\}}|  ¡ rt|ƒ‘qS r   )ÚisdigitÚint)r   ÚtÚidxr   r   r	   r
      s      r   z{0}{1}é   )ÚjoinÚreÚcompileÚescapeÚIÚfindallÚmaxÚformat)Únamesr   ÚmatchZsheet_title_regexÚmatchesÚcountsZhighestr   r   r	   Úavoid_duplicate_name   s    

r   c                   @   s  e Zd ZdZdZdZdZdZd$dd„Zdd„ Z	e
d	d
„ ƒZe
dd„ ƒZe
dd„ ƒZejdd„ ƒZe
dd„ ƒZejdd„ ƒZe
dd„ ƒZejdd„ ƒZe
dd„ ƒZejdd„ ƒZe
dd„ ƒZejdd„ ƒZe
dd„ ƒZejdd„ ƒZe
dd „ ƒZejd!d „ ƒZe
d"d#„ ƒZdS )%Ú_WorkbookChildÚ Nz{0}ZSheetc                 C   s   || _ |p| j| _tƒ | _d S ©N)Ú_parentÚ_default_titleÚtitler   )ÚselfÚparentr#   r   r   r	   Ú__init__-   s    z_WorkbookChild.__init__c                 C   s   d  | jj| j¡S )Nz<{0} "{1}">)r   Ú	__class__Ú__name__r#   ©r$   r   r   r	   Ú__repr__3   s    z_WorkbookChild.__repr__c                 C   s   | j S r    )r!   r)   r   r   r	   r%   7   s    z_WorkbookChild.parentc                 C   s   | j jS r    )r!   Úencodingr)   r   r   r	   r+   <   s    z_WorkbookChild.encodingc                 C   s   | j S r    )Ú_WorkbookChild__titler)   r   r   r	   r#   A   s    z_WorkbookChild.titlec                 C   s¾   | j s
dS |stdƒ‚t|dƒrVt|tƒsVz| d¡}W n tk
rT   tdƒ‚Y nX t |¡}|r|d 	| 
d¡¡}t|ƒ‚| jdk	rž| j|kržt| jj|ƒ}t|ƒdkr´t d	¡ || _dS )
z¬
        Set a sheet title, ensuring it is valid.
        Limited to 31 characters, no special characters.
        Duplicate titles will be incremented numerically
        Nz&Title must have at least one characterÚdecodeÚasciizWorksheet titles must be strz*Invalid character {0} found in sheet titler   é   zTTitle is more than 31 characters. Some applications may not be able to read the file)r!   Ú
ValueErrorÚhasattrÚ
isinstanceÚstrr-   ÚUnicodeDecodeErrorÚINVALID_TITLE_REGEXÚsearchr   Úgroupr#   r   r%   Z
sheetnamesÚlenÚwarningsÚwarnr,   )r$   r   ÚmÚmsgr   r   r	   r#   F   s&    



c                 C   s   | j jS r    ©r   Ú	oddHeaderr)   r   r   r	   r>   h   s    z_WorkbookChild.oddHeaderc                 C   s   || j _d S r    r=   ©r$   r   r   r   r	   r>   m   s    c                 C   s   | j jS r    ©r   Ú	oddFooterr)   r   r   r	   rA   r   s    z_WorkbookChild.oddFooterc                 C   s   || j _d S r    r@   r?   r   r   r	   rA   w   s    c                 C   s   | j jS r    ©r   Ú
evenHeaderr)   r   r   r	   rC   |   s    z_WorkbookChild.evenHeaderc                 C   s   || j _d S r    rB   r?   r   r   r	   rC   �   s    c                 C   s   | j jS r    ©r   Ú
evenFooterr)   r   r   r	   rE   †   s    z_WorkbookChild.evenFooterc                 C   s   || j _d S r    rD   r?   r   r   r	   rE   ‹   s    c                 C   s   | j jS r    ©r   ÚfirstHeaderr)   r   r   r	   rG   �   s    z_WorkbookChild.firstHeaderc                 C   s   || j _d S r    rF   r?   r   r   r	   rG   •   s    c                 C   s   | j jS r    ©r   ÚfirstFooterr)   r   r   r	   rI   š   s    z_WorkbookChild.firstFooterc                 C   s   || j _d S r    rH   r?   r   r   r	   rI   Ÿ   s    c                 C   s   | j  | j¡S r    )Ú_pathr   Ú_idr)   r   r   r	   Úpath¤   s    z_WorkbookChild.path)NN)r(   Ú
__module__Ú__qualname__r,   rK   rJ   r!   r"   r&   r*   Úpropertyr%   r+   r#   Úsetterr>   rA   rC   rE   rG   rI   rL   r   r   r   r	   r   %   sR   




!











r   )	r   r9   Z openpyxl.worksheet.header_footerr   r   r5   r   Úobjectr   r   r   r   r	   Ú<module>   s
   
