U
    YªShä  ã                   @   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   úN/root/rtd-docs/venv/lib/python3.8/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  |k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   s4   | j | jk r0| j| j  |kr dS |  j d7  _ q dS ©NTr   Fr   r   r   r   r   Úgo_in_grouping&   s
    zBaseStemmer.go_in_groupingc                 C   s:   | j | jkrdS | j| j d  |k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   s8   | j | jkr4| j| j d  |kr$dS |  j d8  _ q dS ©Nr   TFr   r   r   r   r   Úgo_in_grouping_b5   s
    zBaseStemmer.go_in_grouping_bc                 C   s6   | j | jkrdS | j| j  |kr2|  j d7  _ dS dS r   r   r   r   r   r   Úout_grouping<   s    zBaseStemmer.out_groupingc                 C   s4   | j | jk r0| j| j  |kr dS |  j d7  _ q dS r   r   r   r   r   r   Úgo_out_groupingD   s
    zBaseStemmer.go_out_groupingc                 C   s:   | j | jkrdS | j| j d  |kr6|  j d8  _ dS dS r   r   r   r   r   r   Úout_grouping_bK   s    zBaseStemmer.out_grouping_bc                 C   s8   | j | jkr4| j| j d  |kr$dS |  j d8  _ q dS r!   r   r   r   r   r   Úgo_out_grouping_bS   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   Úeq_sZ   s    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   s    zBaseStemmer.eq_s_bc                 C   sf  d}t |ƒ}| j}| j}d}d}d}||| d?  }	d}
t||ƒ}||	 }t|t |jƒƒD ]L}|| |krrd}
 q¨t| j||  ƒt|j| ƒ }
|
dkrž q¨|d7 }qZ|
dk rº|	}|}n|	}|}|| dkr$|dkrØqî||krâqî|rèqîd}q$|| }|t |jƒkrN|t |jƒ | _|jd kr(|j	S | | ¡}|t |jƒ | _|rN|j	S |j
}|dk rîdS qîdS )Nr
   Fr   éÿÿÿÿT)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   sZ    
 

zBaseStemmer.find_amongc                 C   st  d}t |ƒ}| j}| j}d}d}d}||| d?  }	d}
t||ƒ}||	 }tt |jƒd | ddƒD ]P}|| |kr|d}
 q¶t| j|d |  ƒt|j| ƒ }
|
dkr¬ q¶|d7 }qd|
dk rÈ|	}|}n|	}|}|| dkr$|dkræqü||krðqü|röqüd}q$|| }|t |jƒkr\|t |jƒ | _|jdkr6|j	S | | ¡}|t |jƒ | _|r\|j	S |j
}|dk rüdS qüdS )zO
        find_among_b is for backwards processing. Same comments apply
        r
   Fr   r*   TN)r   r   r   r+   r,   r   r-   r   r.   r/   r0   )r   r1   r2   r3   r4   Zlbr6   r7   r8   r9   r:   r;   r<   r=   r>   r   r   r   Úfind_among_b£   sZ    
$

zBaseStemmer.find_among_bc                 C   sn   t |ƒ||  }| jd|… | | j|d…  | _|  j|7  _| j|krZ|  j|7  _n| j|krj|| _|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   Zc_braZc_ketr   Z
adjustmentr   r   r   Ú	replace_sÜ   s    	"

zBaseStemmer.replace_sc                 C   s:   | j dk s2| j | jks2| j| jks2| jt| jƒkr6d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)rC   rB   r   r   )r   r   r/   r   r   r   Ú
slice_fromó   s
    zBaseStemmer.slice_fromc                 C   s
   |   d¡S r   )rD   r   r   r   r   Ú	slice_delý   s    zBaseStemmer.slice_delc                 C   sB   |   |||¡}|| jkr&|  j|7  _|| jkr>|  j|7  _dS )zQ
        @type c_bra int
        @type c_ket int
        @type s: string
        N)rB   r   r   rA   r   r   r   Úinsert   s
    

zBaseStemmer.insertc                 C   s"   d}|   ¡ r| j| j| j… }|S )z/
        Return the slice as a string.
        r   )rC   r   r   r   )r   r/   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   Z_stemr   )r   Úwordr   r   r   ÚstemWord  s    
zBaseStemmer.stemWordc                    s   ‡ fdd„|D ƒS )Nc                    s   g | ]}ˆ   |¡‘qS r   )rJ   )Ú.0rI   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)   r?   r@   rB   rC   rD   rE   rF   rG   rH   rJ   rN   r   r   r   r   r      s2   99
	r   N)Úobjectr   r   r   r   r   Ú<module>   ó    