o
    ìšŒhÊ$  ã                   @   s   G d d„ de ƒZdS )c                   @   sÔ   e Z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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/d0„ Zd1d2„ Zd3S )4ÚBaseStemmerc                 C   s   |   d¡ d S ©NÚ )Úset_current©Úself© r   úX/var/www/Befach/backend/venv/lib/python3.10/site-packages/snowballstemmer/basestemmer.pyÚ__init__   s   zBaseStemmer.__init__c                 C   s2   || _ d| _t| j ƒ| _d| _| j| _| j| _dS )z.
        Set the self.current string.
        é    N)ÚcurrentÚcursorÚlenÚlimitÚlimit_backwardÚbraÚket)r   Úvaluer   r   r   r      s   zBaseStemmer.set_currentc                 C   s   | j S )z.
        Get the self.current string.
        )r   r   r   r   r   Úget_current   s   zBaseStemmer.get_currentc                 C   s4   |j | _ |j| _|j| _|j| _|j| _|j| _d S ©N)r   r   r   r   r   r   )r   Úotherr   r   r   Ú	copy_from   s   zBaseStemmer.copy_fromc                 C   sn   | j | jkrdS t| j| j  ƒ}||ks||k rdS ||8 }||d?  d|d@ > @ dkr.dS |  j d7  _ dS )NFé   é   é   r
   T©r   r   Úordr   ©r   ÚsÚminÚmaxÚchr   r   r   Úin_grouping   s   zBaseStemmer.in_groupingc                 C   sv   | j | jk r9t| j| j  ƒ}||ks||k rdS ||8 }||d?  d|d@ > @ dkr,dS |  j d7  _ | j | jk sdS )NTr   r   r   r
   Fr   r   r   r   r   Úgo_in_grouping*   s   ùzBaseStemmer.go_in_groupingc                 C   sr   | j | jkrdS t| j| j d  ƒ}||ks||k rdS ||8 }||d?  d|d@ > @ dkr0dS |  j d8  _ dS )NFr   r   r   r
   T©r   r   r   r   r   r   r   r   Úin_grouping_b5   s   zBaseStemmer.in_grouping_bc                 C   sz   | j | jkr;t| j| j d  ƒ}||ks||k rdS ||8 }||d?  d|d@ > @ dkr.dS |  j d8  _ | j | jksdS )Nr   Tr   r   r
   Fr#   r   r   r   r   Úgo_in_grouping_bA   s   ùzBaseStemmer.go_in_grouping_bc                 C   s|   | j | jkrdS t| j| j  ƒ}||ks||k r!|  j d7  _ dS ||8 }||d?  d|d@ > @ dkr<|  j d7  _ dS dS ©NFr   Tr   r   r
   r   r   r   r   r   Úout_groupingL   s   zBaseStemmer.out_groupingc                 C   sn   | j | jk r5t| j| j  ƒ}||kr(||kr(||8 }||d?  d|d@ > @ r(dS |  j d7  _ | j | jk sdS )Nr   r   r   TFr   r   r   r   r   Úgo_out_groupingY   s   úzBaseStemmer.go_out_groupingc                 C   s€   | j | jkrdS t| j| j d  ƒ}||ks||k r#|  j d8  _ dS ||8 }||d?  d|d@ > @ dkr>|  j d8  _ dS dS r&   r#   r   r   r   r   Úout_grouping_bc   s   zBaseStemmer.out_grouping_bc                 C   sr   | j | jkr7t| j| j d  ƒ}||kr*||kr*||8 }||d?  d|d@ > @ r*dS |  j d8  _ | j | jksdS )Nr   r   r   TFr#   r   r   r   r   Úgo_out_grouping_bp   s   úzBaseStemmer.go_out_grouping_bc                 C   sP   | j | j t|ƒk rdS | j| j| jt|ƒ … |krdS |  jt|ƒ7  _dS ©NFT)r   r   r   r   ©r   r   r   r   r   Úeq_sz   ó   zBaseStemmer.eq_sc                 C   sP   | j | j t|ƒk rdS | j| j t|ƒ | j … |krdS |  j t|ƒ8  _ dS r+   )r   r   r   r   r,   r   r   r   Úeq_s_b‚   r.   zBaseStemmer.eq_s_bc                 C   sh  d}t |ƒ}| j}| j}d}d}d}	 ||| d?  }	d}
t||ƒ}||	 }t|t |jƒƒD ]&}|| |kr:d}
 nt| j||  ƒt|j| ƒ }
|
dkrP n|d7 }q.|
dk r^|	}|}n|	}|}|| dkrw|dkrmn||krrn|rund}q	 || }|t |jƒkrª|t |jƒ | _|jd u r”|j	S t
| |jƒ}|ƒ }|t |jƒ | _|rª|j	S |j}|dk r³dS qy)Nr
   FTr   éÿÿÿÿ)r   r   r   r   Úranger   r   r   ÚmethodÚresultÚgetattrÚsubstring_i)r   ÚvÚiÚjÚcÚlÚcommon_iÚcommon_jÚfirst_key_inspectedÚkÚdiffÚcommonÚwÚi2r2   Úresr   r   r   Ú
find_amongŠ   sb   
 
ã
ózBaseStemmer.find_amongc                 C   sv  d}t |ƒ}| j}| j}d}d}d}	 ||| d?  }	d}
t||ƒ}||	 }tt |jƒd | ddƒD ](}|| |kr?d}
 nt| j|d |  ƒt|j| ƒ }
|
dkrW n|d7 }q3|
dk re|	}|}n|	}|}|| dkr~|dkrtn||kryn|r|nd}q	 || }|t |jƒkr±|t |jƒ | _|jdu r›|j	S t
| |jƒ}|ƒ }|t |jƒ | _|r±|j	S |j}|dk rºdS q€)zO
        find_among_b is for backwards processing. Same comments apply
        r
   FTr   r0   N)r   r   r   r   r1   r   r   r   r2   r3   r4   r5   )r   r6   r7   r8   r9   Úlbr;   r<   r=   r>   r?   r@   rA   rB   r2   rC   r   r   r   Úfind_among_bÄ   sb   
$
æ
ózBaseStemmer.find_among_bc                 C   sp   t |ƒ||  }| jd|… | | j|d…  | _|  j|7  _| j|kr.|  j|7  _|S | j|kr6|| _|S )z®
        to replace chars between c_bra and c_ket in self.current by the
        chars in s.

        @type c_bra int
        @type c_ket int
        @type s: string
        r
   N)r   r   r   r   ©r   Úc_braÚc_ketr   Ú
adjustmentr   r   r   Ú	replace_sþ   s   	"

þzBaseStemmer.replace_sc                 C   s:   | j dk s| j | jks| j| jks| jt| jƒkrdS dS )Nr
   FT)r   r   r   r   r   r   r   r   r   Úslice_check  s   2zBaseStemmer.slice_checkc                 C   s&   d}|   ¡ r|  | j| j|¡ d}|S )z 
        @type s string
        FT)rL   rK   r   r   )r   r   r3   r   r   r   Ú
slice_from  s
   zBaseStemmer.slice_fromc                 C   s
   |   d¡S r   )rM   r   r   r   r   Ú	slice_del  s   
zBaseStemmer.slice_delc                 C   sF   |   |||¡}|| jkr|  j|7  _|| jkr!|  j|7  _dS dS )zQ
        @type c_bra int
        @type c_ket int
        @type s: string
        N)rK   r   r   rG   r   r   r   Úinsert"  s   

ÿzBaseStemmer.insertc                 C   s"   d}|   ¡ r| j| j| j… }|S )z/
        Return the slice as a string.
        r   )rL   r   r   r   )r   r3   r   r   r   Úslice_to.  s   zBaseStemmer.slice_toc                 C   s   | j d| j… S )z<
        Return the current string up to the limit.
        r
   )r   r   r   r   r   r   Ú	assign_to7  s   zBaseStemmer.assign_toc                 C   s   |   |¡ |  ¡  |  ¡ S r   )r   Ú_stemr   )r   Úwordr   r   r   ÚstemWord=  s   
zBaseStemmer.stemWordc                    s   ‡ fdd„|D ƒS )Nc                    s   g | ]}ˆ   |¡‘qS r   )rT   )Ú.0rS   r   r   r   Ú
<listcomp>C  s    z)BaseStemmer.stemWords.<locals>.<listcomp>r   )r   Úwordsr   r   r   Ú	stemWordsB  s   zBaseStemmer.stemWordsN)Ú__name__Ú
__module__Ú__qualname__r	   r   r   r   r!   r"   r$   r%   r'   r(   r)   r*   r-   r/   rD   rF   rK   rL   rM   rN   rO   rP   rQ   rT   rX   r   r   r   r   r      s4    

::
	r   N)Úobjectr   r   r   r   r   Ú<module>   s    