o Š1‹aÊ$ã@sGdd„deƒZdS)c@sÔeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3S)4Ú BaseStemmercCs| d¡dS©NÚ)Ú set_current©Úself©rú=/usr/lib/python3/dist-packages/snowballstemmer/basestemmer.pyÚ__init__szBaseStemmer.__init__cCs2||_d|_t|jƒ|_d|_|j|_|j|_dS)z. Set the self.current string. éN)ÚcurrentÚcursorÚlenÚlimitÚlimit_backwardÚbraÚket)rÚvaluerrrrs   zBaseStemmer.set_currentcCs|jS)z. Get the self.current string. )r rrrrÚ get_currentszBaseStemmer.get_currentcCs4|j|_|j|_|j|_|j|_|j|_|j|_dS©N)r r rrrr)rÚotherrrrÚ copy_froms  zBaseStemmer.copy_fromcCsn|j|jkrdSt|j|jƒ}||ks||krdS||8}||d?d|d@>@dkr.dS|jd7_dS)NFééér T©r rÚordr ©rÚsÚminÚmaxÚchrrrÚ in_groupings zBaseStemmer.in_groupingcCsv|j|jkr9t|j|jƒ}||ks||krdS||8}||d?d|d@>@dkr,dS|jd7_|j|jksdS)NTrrrr FrrrrrÚgo_in_grouping*s  ùzBaseStemmer.go_in_groupingcCsr|j|jkrdSt|j|jdƒ}||ks||krdS||8}||d?d|d@>@dkr0dS|jd8_dS)NFrrrr T©r rrr rrrrÚ in_grouping_b5s zBaseStemmer.in_grouping_bcCsz|j|jkr;t|j|jdƒ}||ks||krdS||8}||d?d|d@>@dkr.dS|jd8_|j|jksdS)NrTrrr Fr#rrrrÚgo_in_grouping_bAs  ùzBaseStemmer.go_in_grouping_bcCs||j|jkrdSt|j|jƒ}||ks||kr!|jd7_dS||8}||d?d|d@>@dkr<|jd7_dSdS©NFrTrrr rrrrrÚ out_groupingLs zBaseStemmer.out_groupingcCsn|j|jkr5t|j|jƒ}||kr(||kr(||8}||d?d|d@>@r(dS|jd7_|j|jksdS)NrrrTFrrrrrÚgo_out_groupingYs  úzBaseStemmer.go_out_groupingcCs€|j|jkrdSt|j|jdƒ}||ks||kr#|jd8_dS||8}||d?d|d@>@dkr>|jd8_dSdSr&r#rrrrÚout_grouping_bcs zBaseStemmer.out_grouping_bcCsr|j|jkr7t|j|jdƒ}||kr*||kr*||8}||d?d|d@>@r*dS|jd8_|j|jksdS)NrrrTFr#rrrrÚgo_out_grouping_bps  úzBaseStemmer.go_out_grouping_bcCsP|j|jt|ƒkr dS|j|j|jt|ƒ…|krdS|jt|ƒ7_dS©NFT)rr r r ©rrrrrÚeq_szó zBaseStemmer.eq_scCsP|j|jt|ƒkr dS|j|jt|ƒ|j…|krdS|jt|ƒ8_dSr+)r rr r r,rrrÚeq_s_b‚r.zBaseStemmer.eq_s_bcCshd}t|ƒ}|j}|j}d}d}d} |||d?} d} t||ƒ} || } t| t| jƒƒD]&} || |kr:d} nt|j|| ƒt| j| ƒ} | dkrPn| d7} q.| dkr^| }| }n| }| }||dkrw|dkrmn ||krrn|rund}q ||} |t| jƒkrª|t| jƒ|_| jdur”| j St || jƒ}|ƒ}|t| jƒ|_|rª| j S| j }|dkr³dSqy)Nr FTréÿÿÿÿ) r r rrÚrangerrr ÚmethodÚresultÚgetattrÚ substring_i)rÚvÚiÚjÚcÚlÚcommon_iÚcommon_jÚfirst_key_inspectedÚkÚdiffÚcommonÚwÚi2r2ÚresrrrÚ find_amongŠsb     ã  ózBaseStemmer.find_amongcCsvd}t|ƒ}|j}|j}d}d}d} |||d?} d} t||ƒ} || } tt| jƒd| ddƒD](} || |kr?d} nt|j|d| ƒt| j| ƒ} | dkrWn| d7} q3| dkre| }| }n| }| }||dkr~|dkrtn ||kryn|r|nd}q ||} |t| jƒkr±|t| jƒ|_| jdur›| j St || jƒ}|ƒ}|t| jƒ|_|r±| j S| j }|dkrºdSq€)zO find_among_b is for backwards processing. Same comments apply r FTrr0N) r r rrr1rrr r2r3r4r5)rr6r7r8r9Úlbr;r<r=r>r?r@rArBr2rCrrrÚ find_among_bÄsb  $  æ  ózBaseStemmer.find_among_bcCspt|ƒ||}|jd|…||j|d…|_|j|7_|j|kr.|j|7_|S|j|kr6||_|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 rr ©rÚc_braÚc_ketrÚ adjustmentrrrÚ replace_sþs "  þzBaseStemmer.replace_scCs:|jdks|j|jks|j|jks|jt|jƒkrdSdS)Nr FT)rrrr r rrrrÚ slice_checks2zBaseStemmer.slice_checkcCs&d}| ¡r| |j|j|¡d}|S)z @type s string FT)rLrKrr)rrr3rrrÚ slice_froms zBaseStemmer.slice_fromcCs | d¡Sr)rMrrrrÚ slice_dels zBaseStemmer.slice_delcCsF| |||¡}||jkr|j|7_||jkr!|j|7_dSdS)zQ @type c_bra int @type c_ket int @type s: string N)rKrrrGrrrÚinsert"s   ÿzBaseStemmer.insertcCs"d}| ¡r|j|j|j…}|S)z/ Return the slice as a string. r)rLr rr)rr3rrrÚslice_to.szBaseStemmer.slice_tocCs|jd|j…S)z< Return the current string up to the limit. r )r rrrrrÚ assign_to7szBaseStemmer.assign_tocCs| |¡| ¡| ¡Sr)rÚ_stemr)rÚwordrrrÚstemWord=s zBaseStemmer.stemWordcs‡fdd„|DƒS)Ncsg|]}ˆ |¡‘qSr)rT)Ú.0rSrrrÚ Csz)BaseStemmer.stemWords..r)rÚwordsrrrÚ stemWordsBszBaseStemmer.stemWordsN)Ú__name__Ú __module__Ú __qualname__r rrrr!r"r$r%r'r(r)r*r-r/rDrFrKrLrMrNrOrPrQrTrXrrrrrs4         ::    rN)ÚobjectrrrrrÚs