U
    [e                     @   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-2022 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
   a/var/www/html/services/stratfitenv/lib/python3.8/site-packages/pyexcel/internal/sheets/_shared.py__init__   s    z&CommonPropertyAmongRowNColumn.__init__c                 C   s   t dd S )NzNot implemented)NotImplementedErrorr   otherr
   r
   r   __iadd__   s    z&CommonPropertyAmongRowNColumn.__iadd__c                 C   s   |  | | jS )z/Overload + sign

        :return: self
        )r   r   r   r
   r
   r   __add__   s    
z%CommonPropertyAmongRowNColumn.__add__c                 C   s$   d}t | tjr| }n
tt| }|S )z3return the actual converter or a built-in converterN)
isinstancetypesFunctionTyper   r   )Z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krd}nt| j d}| jdkr,|}nt| j|}||krFtn<||k r|| jrdt||| j}n
t||}tst|}n|g}|S )z-An internal function to analyze a given sliceNr   )	startmaxstopmin
ValueErrorstepranger   list)Zasliceupper_boundr   r   Zmy_ranger
   r
   r   analyse_slice1   s     



r%   c                 C   s    t | dk rdS t|  S dS )z+translate MS excel column position to indexr   N)len
_get_indexupper)index_charsr
   r
   r   excel_column_indexJ   s    r+   c                 C   sH   t | dk rdS td| }|r@t|dd t|dfS tdS )z$translate MS excel position to index   )r&   r&   z([A-Za-z]+)([0-9]+)r   N)r'   rematchintgroupr+   
IndexError)Z	pos_charsr0   r
   r
   r   excel_cell_positionR   s     r2   ABCDEFGHIJKLMNOPQRSTUVWXYZc                 C   s   t | }t t}|dkrvd}td|D ]J}||d k r^|t| | d ||d |   7 }q&|t| | 7 }q&|S t| d S d S )Nr   r   )r'   _INDICESr"   index)r*   lengthZindex_chars_lengthr5   ir
   r
   r   r(   d   s    r(   c                    sJ   t | tr | }n0t | trBt | d trB fdd| D }n| S |S )ztranslate names to indicesr   c                    s   g | ]}  |qS r
   )r5   ).0Zastrseriesr
   r   
<listcomp>{   s     z$names_to_indices.<locals>.<listcomp>)r   strr5   r#   )namesr:   indicesr
   r9   r   names_to_indicesu   s    
r?   c                 C   s   | dk r| d S | S d S )Nr   r&   r
   )valuer
   r
   r   abs   s    rA   )r   r-   r   	functoolsr   Zpyexcel._compactr   
formattersr   objectr   r%   r+   r2   r4   r(   r?   rA   r
   r
   r
   r   <module>   s   	