U
    YSh"                     @   s   d dl mZ d dlmZ G dd deZG dd deZG dd deZG d	d
 d
eZG dd deZ	G dd deZ
G dd deZdS )   )BaseStemmer)Amongc                   @   s  e Zd ZdZdddddhZd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eddd ed!dd ed"dd gZed#dd ed$dd ed%dd gZeddd eed&dd e
ed'd d e	gZed(dd ed)dd*ed+dd ed,d*d-ed.d*d ed/d0d ed1d0d2eed3dd4ed5dd*ed6d7d*ed8d7d0eed9dd gZed:dd2eed;dd0ed<dd2ed=dd ed>d2d*ed?d2d gZd@S )AIndonesianStemmerz
    This class implements the stemming algorithm defined by a snowball script.
    Generated from indonesian.sbl by Snowball 3.0.1 - https://snowballstem.org/
    aeiou    c                 C   sB   | j | _| tjdkrdS | j | _|  s0dS |  jd8  _dS Nr
   Fr   T)cursorketfind_among_br   a_0bra	slice_del	I_measureself r   U/root/rtd-docs/venv/lib/python3.8/site-packages/snowballstemmer/indonesian_stemmer.pyZ__r_remove_particle   s    z%IndonesianStemmer.__r_remove_particlec                 C   sB   | j | _| tjdkrdS | j | _|  s0dS |  jd8  _dS r   )r   r   r   r   a_1r   r   r   r   r   r   r   Z__r_remove_possessive_pronoun   s    z/IndonesianStemmer.__r_remove_possessive_pronounc                 C   s    | j dkrdS | j dkrdS dS )N   F   TI_prefixr   r   r   r   Z__r_SUFFIX_KAN_OK)   s
    

z#IndonesianStemmer.__r_SUFFIX_KAN_OKc                 C   s
   | j dkS )Nr   r   r   r   r   r   Z__r_SUFFIX_AN_OK0   s    z"IndonesianStemmer.__r_SUFFIX_AN_OKc                 C   sV   | j dkrdS | j| j }z| ds,t W dS  tk
rD   Y nX | j| | _dS )Nr   FsT)r   limitr   Zeq_s_blab0)r   v_1r   r   r   Z__r_SUFFIX_I_OK3   s    

 z!IndonesianStemmer.__r_SUFFIX_I_OKc                 C   sB   | j | _| tjdkrdS | j | _|  s0dS |  jd8  _dS r   )r   r   r   r   a_2r   r   r   r   r   r   r   Z__r_remove_suffix?   s    z#IndonesianStemmer.__r_remove_suffixc                 C   s   |  tjsdS dS )NFT)in_groupingr   g_vowelr   r   r   r   Z	__r_VOWELJ   s    zIndonesianStemmer.__r_VOWELc                 C   s"   |  tjsdS | dsdS dS )NFZerT)Zout_groupingr   r"   Zeq_sr   r   r   r   Z__r_KERO   s
    
zIndonesianStemmer.__r_KERc                 C   s0  | j | _| tj}|dkr dS | j | _|dkrT|  s<dS d| _|  jd8  _n|dkr|  shdS d| _|  jd8  _n|dkrd| _| 	dsdS |  jd8  _n~|dkrd| _| 	dsdS |  jd8  _nP|dkrd| _|  jd8  _zv| j }z>| j }| 
tjst || _ | 	d	s8W W dS t W n tk
rV   Y nX || _ |  snW dS W n tk
r   Y nX nd| _|  jd8  _zv| j }z>| j }| 
tjst || _ | 	d	sW W dS t W n tk
r   Y nX || _ |  sW dS W n tk
r*   Y nX d
S )Nr
   Fr   r   r   r         pT)r   r   
find_amongr   a_3r   r   r   r   
slice_fromr!   r"   lab1r   lab3lab2)r   	among_varr   Zv_2v_3v_4r   r   r   Z__r_remove_first_order_prefixV   s    



 

 
 

 z/IndonesianStemmer.__r_remove_first_order_prefixc                 C   s   | j | _| tj}|dkr dS | j | _|dkrR|  s<dS d| _|  jd8  _nr|dkrx| 	dshdS |  jd8  _nL|dkr|  sdS d| _|  jd8  _n"| 	dsdS d| _|  jd8  _dS )	Nr
   Fr   r   Zajarr   r#   T)
r   r   r&   r   a_4r   r   r   r   r(   )r   r,   r   r   r   Z__r_remove_second_order_prefix   s0    

z0IndonesianStemmer.__r_remove_second_order_prefixc           
      C   sx  d| _ | j}zTz6| tjs"t |  jd7  _|  j d7  _ W qW q^ tk
rX   Y q^X q^qW n tk
rt   Y nX || _| j dkrdS d| _| j| _| j	| _| j	| j }| 
  | j	| | _| j dkrdS | j	| j }|   | j	| | _| j| _| j dkrdS zT| j}z| j}|  s(t | j}zl| j}| j dkrHt | j| _| j	| _|  sht | j| _|| _| j dkrt |  st W n tk
r   Y nX || _|| _t W n tk
r   Y nX || _| j}|   || _| j}	z>| j dkrt | j| _| j	| _|  s2t | j| _W n tk
rR   Y nX |	| _W n tk
rr   Y nX dS )Nr
   r   r   FT)r   r   Zgo_out_groupingr   r"   r)   r   r   Zlimit_backwardr   %_IndonesianStemmer__r_remove_particle/_IndonesianStemmer__r_remove_possessive_pronoun/_IndonesianStemmer__r_remove_first_order_prefixr*   lab4#_IndonesianStemmer__r_remove_suffix0_IndonesianStemmer__r_remove_second_order_prefixr+   lab5)
r   r   r-   r.   Zv_5Zv_6Zv_7Zv_8Zv_9Zv_10r   r   r   _stem   s      





 
 
 
 zIndonesianStemmer._stemZkahr   ZlahZpunZnyaZkumuZanZkanZdiZker   meZmemr$   ZmenZmengr#   Zmenyr   pem   penZpeng   ZpenyZterbeZbelajarZberZpeZpelajarZperN)__name__
__module____qualname____doc__r"   r   r   r0   r1   Z#_IndonesianStemmer__r_SUFFIX_KAN_OKZ"_IndonesianStemmer__r_SUFFIX_AN_OKZ!_IndonesianStemmer__r_SUFFIX_I_OKr4   Z_IndonesianStemmer__r_VOWELZ_IndonesianStemmer__r_KERr2   r5   r7   r   r   r   r    r'   r/   r   r   r   r   r      s^   DL




















r   c                   @   s   e Zd ZdS )r   Nr@   rA   rB   r   r   r   r   r   -  s    r   c                   @   s   e Zd ZdS )r)   NrD   r   r   r   r   r)   0  s    r)   c                   @   s   e Zd ZdS )r+   NrD   r   r   r   r   r+   3  s    r+   c                   @   s   e Zd ZdS )r*   NrD   r   r   r   r   r*   6  s    r*   c                   @   s   e Zd ZdS )r3   NrD   r   r   r   r   r3   9  s    r3   c                   @   s   e Zd ZdS )r6   NrD   r   r   r   r   r6   <  s    r6   N)Zbasestemmerr   Zamongr   r   BaseExceptionr   r)   r+   r*   r3   r6   r   r   r   r   <module>   s     '