o
    ÿM iä  ã                   @   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   úO/home/ubuntu/.local/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   s6   | j | jkrdS | j| j  |vrdS |  j d7  _ dS ©NFé   T©r   r   r   ©r   Úsr   r   r   Úin_grouping   s   zBaseStemmer.in_groupingc                 C   s>   | j | jk r| j| j  |vrdS |  j d7  _ | j | jk sdS ©NTr   Fr   r   r   r   r   Úgo_in_grouping&   ó   ýzBaseStemmer.go_in_groupingc                 C   s:   | j | jkrdS | j| j d  |vrdS |  j d8  _ dS r   ©r   r   r   r   r   r   r   Úin_grouping_b-   s   zBaseStemmer.in_grouping_bc                 C   sB   | j | jkr| j| j d  |vrdS |  j d8  _ | j | jksdS ©Nr   TFr    r   r   r   r   Úgo_in_grouping_b5   ó   ýzBaseStemmer.go_in_grouping_bc                 C   s6   | j | jkrdS | j| j  |vr|  j d7  _ dS dS r   r   r   r   r   r   Úout_grouping<   s   zBaseStemmer.out_groupingc                 C   s>   | j | jk r| j| j  |v rdS |  j d7  _ | j | jk sdS r   r   r   r   r   r   Úgo_out_groupingD   r   zBaseStemmer.go_out_groupingc                 C   s:   | j | jkrdS | j| j d  |vr|  j d8  _ dS dS r   r    r   r   r   r   Úout_grouping_bK   s   zBaseStemmer.out_grouping_bc                 C   sB   | j | jkr| j| j d  |v rdS |  j d8  _ | j | jksdS r"   r    r   r   r   r   Úgo_out_grouping_bS   r$   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   Ú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_bb   r+   zBaseStemmer.eq_s_bc                 C   s`  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ƒ | _|r¦|j	S |j
}|dk r¯dS qy)Nr
   FTr   éÿÿÿÿ)r   r   r   ÚminÚranger   Úordr   ÚmethodÚresultÚsubstring_i)r   ÚvÚiÚjÚcÚlÚcommon_iÚcommon_jÚfirst_key_inspectedÚkÚdiffÚcommonÚwÚi2Úresr   r   r   Ú
find_amongj   s`   
 
ã

ôzBaseStemmer.find_amongc                 C   sn  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ƒ | _|r­|j	S |j
}|dk r¶dS q€)zO
        find_among_b is for backwards processing. Same comments apply
        r
   FTr   r-   N)r   r   r   r.   r/   r   r0   r   r1   r2   r3   )r   r4   r5   r6   r7   Úlbr9   r:   r;   r<   r=   r>   r?   r@   rA   r   r   r   Úfind_among_b£   s`   
$
æ

ô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)rJ   rI   r   r   )r   r   r2   r   r   r   Ú
slice_fromó   s
   zBaseStemmer.slice_fromc                 C   s
   |   d¡S r   )rK   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)rI   r   r   rE   r   r   r   Úinsert   s   

ÿzBaseStemmer.insertc                 C   s"   d}|   ¡ r| j| j| j… }|S )z/
        Return the slice as a string.
        r   )rJ   r   r   r   )r   r2   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_to  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   )rR   )Ú.0rQ   r   r   r   Ú
<listcomp>!  s    z)BaseStemmer.stemWords.<locals>.<listcomp>r   )r   Úwordsr   r   r   Ú	stemWords   s   zBaseStemmer.stemWordsN)Ú__name__Ú
__module__Ú__qualname__r	   r   r   r   r   r   r!   r#   r%   r&   r'   r(   r*   r,   rB   rD   rI   rJ   rK   rL   rM   rN   rO   rR   rV   r   r   r   r   r      s4    99
	r   N)Úobjectr   r   r   r   r   Ú<module>   s    