o
    ‹¨Êh  ã                   @   s‚   d Z ddlZddlZddlmZ ddlmZ ddlmZ G dd„ de	ƒZ
d	d
„ Zdd„ Zdd„ Z	 dZdd„ Zdd„ Zdd„ ZdS )zÌ
    pyexcel.internal.sheets._shared
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Locally shared utility functions

    :copyright: (c) 2015-2017 by Onni Software Ltd.
    :license: New BSD License
é    N)Úpartial)ÚPY2é   )Ú	to_formatc                   @   s4   e Zd ZdZdd„ Zdd„ Zdd„ Zedd	„ ƒZd
S )ÚCommonPropertyAmongRowNColumnz6
    Group reusable functions from row and column
    c                 C   s
   || _ d S )N)Ú_ref)ÚselfÚmatrix© r
   úQ/var/www/html/env/lib/python3.10/site-packages/pyexcel/internal/sheets/_shared.pyÚ__init__   s   
z&CommonPropertyAmongRowNColumn.__init__c                 C   s   t dƒ‚)NzNot implemented)ÚNotImplementedError©r   Úotherr
   r
   r   Ú__iadd__   s   z&CommonPropertyAmongRowNColumn.__iadd__c                 C   s   |   |¡ | jS )z0Overload += sign

        :return: self
        )r   r   r   r
   r
   r   Ú__add__   s   
z%CommonPropertyAmongRowNColumn.__add__c                 C   s&   d}t | tjƒr| }|S tt| ƒ}|S )z3return the actual converter or a built-in converterN)Ú
isinstanceÚtypesÚFunctionTyper   r   )ÚtheformatterÚ	converterr
   r
   r   Úget_converter%   s   
ÿz+CommonPropertyAmongRowNColumn.get_converterN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Ústaticmethodr   r
   r
   r
   r   r      s    r   c                 C   s†   | j du rd}nt| j dƒ}| jdu r|}nt| j|ƒ}||kr"t‚||k r>| jr1t||| jƒ}nt||ƒ}ts<t|ƒ}|S |g}|S )z2An internal function to analyze a given slice
    Nr   )	ÚstartÚmaxÚstopÚminÚ
ValueErrorÚstepÚranger   Úlist)ÚasliceÚupper_boundr   r   Úmy_ranger
   r
   r   Úanalyse_slice0   s"   


ÿr(   c                 C   s   t | ƒdk rdS t|  ¡ ƒS )z+translate MS excel column position to indexr   éÿÿÿÿ)ÚlenÚ
_get_indexÚupper)Úindex_charsr
   r
   r   Úexcel_column_indexJ   s   r.   c                 C   sD   t | ƒdk rdS t d| ¡}|r t| d¡ƒd t| d¡ƒfS t‚)z$translate MS excel position to indexé   )r)   r)   z([A-Za-z]+)([0-9]+)r   )r*   ÚreÚmatchÚintÚgroupr.   Ú
IndexError)Ú	pos_charsr3   r
   r
   r   Úexcel_cell_positionR   s    r6   ÚABCDEFGHIJKLMNOPQRSTUVWXYZc                 C   s„   t | ƒ}t tƒ}|dkr;d}td|ƒD ]%}||d k r/|t | | ¡d ||d |   7 }q|t | | ¡7 }q|S t | d ¡S )Nr   r   )r*   Ú_INDICESr#   Úindex)r-   ÚlengthÚindex_chars_lengthr9   Úir
   r
   r   r+   d   s   ÿr+   c                    sJ   t | tƒrˆ  | ¡}|S t | tƒr#t | d tƒr#‡ fdd„| D ƒ}|S | S )ztranslate names to indicesr   c                    s   g | ]}ˆ   |¡‘qS r
   )r9   )Ú.0Úastr©Úseriesr
   r   Ú
<listcomp>{   s    z$names_to_indices.<locals>.<listcomp>)r   Ústrr9   r$   )Únamesr@   Úindicesr
   r?   r   Únames_to_indicesu   s   

ûÿrE   c                 C   s   | dk r| d S | S )Nr   r)   r
   )Úvaluer
   r
   r   Úabs�   s   rG   )r   r0   r   Ú	functoolsr   Úpyexcel._compactr   Ú
formattersr   Úobjectr   r(   r.   r6   r8   r+   rE   rG   r
   r
   r
   r   Ú<module>   s    	