
    =wgz                         d Z ddlZ ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Zd	 Z	d
 Z
d Zd Zd Zd Zd Zd ZdZd Zd ZdZd Zd Zd Zddg fddg fddg fddg fd d!g fd"d#g fd$d%g fd&d'g fd(d)g fd*dg fd+d,g fd-d,g fd.dg fd/d!g fd0dg fd1d2g fd3d4g fd5d6g fd7dg fd8dg fd9d,g fd:d%g fd;d<d=gfd>d?g d@ffZdA ZdB ZdCZdD ZdEZdF ZdG ZdH Z i dIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^dLdLd_d_d`d`dadadbdbdcdcddddiZ! e"g de      Z#df Z$y)gaB  An implementation of the Porter2 stemming algorithm.
See http://snowball.tartarus.org/algorithms/english/stemmer.html

Adapted from pyporter2 by Michael Dirolf.

This algorithm is more correct but (at least in this implementation)
several times slower than the original porter algorithm as implemented
in stemming.porter.
    Nz![^aeiouy]*[aeiouy]+[^aeiouy](\w*)z^[aeiouy][^aeiouy]$z .*[^aeiouy][aeiouy][^aeiouywxY]$z([aeiouy])yz	[aeiouy].z[aeiouy]c                     | j                  d      s| j                  d      ry| j                  d      ryt        j                  |       }|r|j                  d      S t	        |       S )Ngenerarsen   commun      )
startswithr_expmatchstartlenwordr   s     J/var/www/horilla/myenv/lib/python3.12/site-packages/whoosh/lang/porter2.pyget_r1r      sV    w4??7#;x  KKE{{1~t9    c                 |    t         j                  | t        |             }|r|j                  d      S t	        |       S )Nr	   )r   r   r   r   r   r   s     r   get_r2r   #   s1    KKfTl+E{{1~t9r   c                 x    t        |       dk(  rt        j                  |       ryt        j                  |       ryy)N   TF)r   	ewss_exp1r   	ewss_exp2r   s    r   ends_with_short_syllabler   *   s.    
4yA~??4 tr   c                 J    t        |       rt        |       t        |       k(  ryyNTF)r   r   r   r   s    r   is_short_wordr   3   s     %$<3t9$r   c                 2    | j                  d      r| dd  S | S )N'r	   )r
   r   s    r   remove_initial_apostropher!   :   s    sABxKr   c                 `    | j                  d      rd| dd  z   } t        j                  d|       S )NyYr	   z\g<1>Y)r
   ccy_expsubr   s    r   capitalize_consonant_ysr'   @   s.    sT!"X~;;x&&r   c                     | j                  d      r| d d S | j                  d      r| d d S | j                  d      r| d d S | S )Nz's'z'sr    )endswithr   s    r   step_0r-   F   sO    }}UCRy}}TCRy}}SCRyKr   c                 ^   | j                  d      r| d d dz   S | j                  d      s| j                  d      rt        |       dkD  r| d d dz   S | d d d	z   S | j                  d
      s| j                  d      r| S | j                  d      r| d d }t        j                  |      r|S | S | S )Nssesssiedies   r)   iieussr+   )r,   r   s1a_expsearch)r   	precedings     r   step_1ar<   P   s    }}VCRy4}}Ut}}U3t9q=9s?"9t##}}TdmmD1}}S"I	>>)$Kr   )	bbddffggmmnnpprrttc                 @    t         D ]  }| j                  |      s y yr   )doublesr,   )r   doubles     r   ends_with_doublerI   e   s%     ==  r   c                     | j                  d      s"| j                  d      s| j                  d      r| dz   S t        |       r| d d S t        |       r| dz   S | S )Natblizer+   )r,   rI   r   r   s    r   step_1b_helperrO   l   sY    }}TdmmD1T]]45HczCRyTczKr   )ededlyinginglyc                 L   | j                  d      rt        |       dz
  |k\  r| d d S | S | j                  d      rt        |       dz
  |k\  r| d d S | S t        D ]H  }| j                  |      s| d t        |        }t        j	                  |      rt        |      c S | c S  | S )Needlyr   r)   eed   r+   )r,   r   s1b_suffixess1b_expr:   rO   )r   r1suffixr;   s       r   step_1br\   y   s    }}Wt9q=B9}}Ut9q=B9 == ]s6{l+I~~i(%i00K Kr   c                     | j                  d      s| j                  d      r+t        |       dkD  r| d   dvrt        |       dkD  r| d d dz   S | S )	Nr#   r$   r	   r*   aeiouyr   r+   r5   r,   r   r   s    r   step_1cr`      sO    }}ST]]3/CIM88#4y1}CRy3&Kr   c                     | j                  |      rlt        |       t        |      z
  |k\  rP|g k(  r| d t        |        |z   S |D ]4  }| d t        |        j                  |      s"| d t        |        |z   c S  | S y Nr_   )r   rZ   endreplprevps         r   step_2_helperrg      s    ==4y3s8#r)2:
#c(+d22 7AJc#hY'003#Jc#hY/$667 Kr   izationizeationalatefulnessfulousnessousivenessivetionaltionbilitiblelesslilessentlientationalismalalitiousliivitifulliencienceancianceabliableizeratorallibliogioglli )
cdrN   ghkmnrtc           	      X    t         D ]   }t        | ||d   |d   |d         }|s|c S  | S Nr   r	   r   )
s2_triplesrg   )r   rZ   tripattempts       r   step_2r      s>     b$q'47DGDN Kr   c                     | j                  |      r\t        |       t        |      z
  |k\  r@|s| d t        |        |z   S t        |       t        |      z
  |k\  r| d t        |        |z   S | S y rb   r_   )r   rZ   r2rc   rd   r2_necessarys         r   step_3_helperr      ss    }}St9s3x2%Jc#hY'$..t9s3x'2-
#c(+d22r   )	)rj   rk   F)rr   rs   F)alizer|   F)icateicF)icitir   F)ativer   T)icalr   F)nessr   F)rm   r   Fc           
      Z    t         D ]!  }t        | |||d   |d   |d         }|s|c S  | S r   )
s3_triplesr   )r   rZ   r   r   r   s        r   step_3r      s@     b"d1gtAwQHN Kr   )r|   r   r   err   r   ibleantementmentry   ismrk   itiro   rq   ri   c                    t         D ]B  }| j                  |      st        |       t        |      z
  |k\  r| d t        |        c S | c S  | j                  d      s| j                  d      rt        |       dz
  |k\  r| d d S | S )Nsionrs   rW   r)   )s4_delete_listr,   r   )r   r   rc   s      r   step_4r      s     ==4y3s8#r)Jc#hY''K	 }}Vf 5t9q=B9Kr   c                     | j                  d      r t        |       dz
  |k\  r| d   dk(  r| d d S | S | j                  d      r:t        |       dz
  |k\  r| d d S t        |       dz
  |k\  rt        | d d       s| d d S | S )Nr   r	   r*   r+   rN   )r,   r   r   r   rZ   r   s      r   step_5r      s    }}St9q=B48s?9}}St9q=B9t9q=B'?Sb	'J9Kr   c                 &    | j                  dd      S )Nr$   r#   )replacer   s    r   normalize_ysr     s    <<S!!r   skisskiskiesskydyingdielyinglietyingtieidlyidlgentlygentluglyugliearlyearlionlyonlisinglysinglnewshoweatlascosmosbiasandes)inningoutingcanningherringearringproceedexceedsucceedc                    t        |       dk  r| S t        |       } | t        v r	t        |    S t        |       } t	        |       }t        |       }t        |       } t        |       } | t        v r| S t        | |      } t        |       } t        | |      } t        | ||      } t        | |      } t        | ||      } t        |       } | S )Nr   )r   r!   exceptional_formsr'   r   r   r-   r<   exceptional_early_exit_post_1ar\   r`   r   r   r   r   r   r   s      r   stemr     s    
4yA~$T*D    &&"4(D	B	B$<D4=D --4D4=D$D$BD$D$BDDKr   )%__doc__recompiler   r   r   r%   r9   rY   r   r   r   r   r!   r'   r-   r<   rG   rI   rO   rX   r\   r`   rg   r   r   r   r   r   r   r   r   r   r   	frozensetr   r    r   r   <module>r      s   


78BJJ-.	BJJ:;	
"**^
$
"**\
"
"**[
!'$ A .(	 %$5"%5"%5"%5"%&"%%$&"%##r"r"######r"r"b!ub!tcU#bLM/O
4	#
K"&VU &U&U& U& U	&
 E& g& F& W& F& g& 5& F& F& W& h&  F!&" W#& & "+ ,W "X r   