
Ë|jÃ$  ã               @   s*  d  d l  m Z m Z m Z d  d l m Z m Z m Z d  d l m	 Z	 m
 Z
 m Z d  d l m Z m Z m Z d  d l m Z m Z m Z Gd d „  d e ƒ Z Gd d	 „  d	 e ƒ Z Gd
 d „  d e ƒ Z Gd d „  d e ƒ Z Gd d „  d e ƒ Z Gd d „  d e ƒ Z Gd d „  d e ƒ Z d S)é   )ÚEUCTW_CHAR_TO_FREQ_ORDERÚEUCTW_TABLE_SIZEÚ EUCTW_TYPICAL_DISTRIBUTION_RATIO)ÚEUCKR_CHAR_TO_FREQ_ORDERÚEUCKR_TABLE_SIZEÚ EUCKR_TYPICAL_DISTRIBUTION_RATIO)ÚGB2312_CHAR_TO_FREQ_ORDERÚGB2312_TABLE_SIZEÚ!GB2312_TYPICAL_DISTRIBUTION_RATIO)ÚBIG5_CHAR_TO_FREQ_ORDERÚBIG5_TABLE_SIZEÚBIG5_TYPICAL_DISTRIBUTION_RATIO)ÚJIS_CHAR_TO_FREQ_ORDERÚJIS_TABLE_SIZEÚJIS_TYPICAL_DISTRIBUTION_RATIOc               @   sp   e  Z d  Z d Z d Z d Z d Z d d „  Z d d „  Z d	 d
 „  Z	 d d „  Z
 d d „  Z d d „  Z d S)ÚCharDistributionAnalysisi   g®Gáz®ï?g{®Gáz„?é   c             C   sD   d  |  _  d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ |  j ƒ  d  S)N)Ú_char_to_freq_orderÚ_table_sizeÚtypical_distribution_ratioÚ_doneÚ_total_charsÚ_freq_charsÚreset)Úself© r   ú;/tmp/pip-build-1hwfuv5s/chardet/chardet/chardistribution.pyÚ__init__.   s    						z!CharDistributionAnalysis.__init__c             C   s   d |  _  d |  _ d |  _ d S)zreset analyser, clear any stateFé    N)r   r   r   )r   r   r   r   r   =   s    		zCharDistributionAnalysis.resetc             C   st   | d k r |  j  | ƒ } n d } | d k rp |  j d 7_ | |  j k  rp d |  j | k rp |  j d 7_ d S)z"feed a character with known lengthé   r   r   i   Néÿÿÿÿ)Ú	get_orderr   r   r   r   )r   ÚcharZchar_lenÚorderr   r   r   ÚfeedF   s    zCharDistributionAnalysis.feedc             C   sr   |  j  d k s! |  j |  j k r( |  j S|  j  |  j k rk |  j |  j  |  j |  j } | |  j k  rk | S|  j S)z(return confidence based on existing datar   )r   r   ÚMINIMUM_DATA_THRESHOLDÚSURE_NOr   ÚSURE_YES)r   Úrr   r   r   Úget_confidenceT   s    !z'CharDistributionAnalysis.get_confidencec             C   s   |  j  |  j k S)N)r   ÚENOUGH_DATA_THRESHOLD)r   r   r   r   Úgot_enough_datad   s    z(CharDistributionAnalysis.got_enough_datac             C   s   d S)Nr   r    r   )r   Úbyte_strr   r   r   r!   i   s    z"CharDistributionAnalysis.get_orderN)Ú__name__Ú
__module__Ú__qualname__r*   r'   r&   r%   r   r   r$   r)   r+   r!   r   r   r   r   r   (   s   	r   c                   s.   e  Z d  Z ‡  f d d †  Z d d „  Z ‡  S)ÚEUCTWDistributionAnalysisc                s2   t  t |  ƒ j ƒ  t |  _ t |  _ t |  _ d  S)N)	Úsuperr0   r   r   r   r   r   r   r   )r   )Ú	__class__r   r   r   r   s    		z"EUCTWDistributionAnalysis.__init__c             C   s6   | d } | d k r. d | d | d d Sd Sd  S)Nr   éÄ   é^   r   é¡   r    r   )r   r,   Ú
first_charr   r   r   r!   x   s    
z#EUCTWDistributionAnalysis.get_order)r-   r.   r/   r   r!   r   r   )r2   r   r0   q   s   r0   c                   s.   e  Z d  Z ‡  f d d †  Z d d „  Z ‡  S)ÚEUCKRDistributionAnalysisc                s2   t  t |  ƒ j ƒ  t |  _ t |  _ t |  _ d  S)N)	r1   r7   r   r   r   r   r   r   r   )r   )r2   r   r   r   …   s    		z"EUCKRDistributionAnalysis.__init__c             C   s6   | d } | d k r. d | d | d d Sd Sd  S)Nr   é°   r4   r   r5   r    r   )r   r,   r6   r   r   r   r!   ‹   s    
z#EUCKRDistributionAnalysis.get_order)r-   r.   r/   r   r!   r   r   )r2   r   r7   „   s   r7   c                   s.   e  Z d  Z ‡  f d d †  Z d d „  Z ‡  S)ÚGB2312DistributionAnalysisc                s2   t  t |  ƒ j ƒ  t |  _ t |  _ t |  _ d  S)N)	r1   r9   r   r   r   r	   r   r
   r   )r   )r2   r   r   r   ˜   s    		z#GB2312DistributionAnalysis.__init__c             C   sI   | d | d } } | d k rA | d k rA d | d | d Sd Sd  S)Nr   r   r8   r5   r4   r    r   )r   r,   r6   Úsecond_charr   r   r   r!   ž   s    z$GB2312DistributionAnalysis.get_order)r-   r.   r/   r   r!   r   r   )r2   r   r9   —   s   r9   c                   s.   e  Z d  Z ‡  f d d †  Z d d „  Z ‡  S)ÚBig5DistributionAnalysisc                s2   t  t |  ƒ j ƒ  t |  _ t |  _ t |  _ d  S)N)	r1   r;   r   r   r   r   r   r   r   )r   )r2   r   r   r   «   s    		z!Big5DistributionAnalysis.__init__c             C   sd   | d | d } } | d k r\ | d k rE d | d | d d Sd | d | d Sn d Sd  S)	Nr   r   é¤   r5   é�   é?   é@   r    r   )r   r,   r6   r:   r   r   r   r!   ±   s    z"Big5DistributionAnalysis.get_order)r-   r.   r/   r   r!   r   r   )r2   r   r;   ª   s   r;   c                   s.   e  Z d  Z ‡  f d d †  Z d d „  Z ‡  S)ÚSJISDistributionAnalysisc                s2   t  t |  ƒ j ƒ  t |  _ t |  _ t |  _ d  S)N)	r1   r@   r   r   r   r   r   r   r   )r   )r2   r   r   r   Á   s    		z!SJISDistributionAnalysis.__init__c             C   s“   | d | d } } | d k r> | d k r> d | d } n1 | d k rk | d k rk d | d d } n d S| | d	 } | d
 k r� d } | S)Nr   r   é�   éŸ   é¼   éà   éï   é   r?   é   r    r    r   )r   r,   r6   r:   r#   r   r   r   r!   Ç   s    z"SJISDistributionAnalysis.get_order)r-   r.   r/   r   r!   r   r   )r2   r   r@   À   s   r@   c                   s.   e  Z d  Z ‡  f d d †  Z d d „  Z ‡  S)ÚEUCJPDistributionAnalysisc                s2   t  t |  ƒ j ƒ  t |  _ t |  _ t |  _ d  S)N)	r1   rH   r   r   r   r   r   r   r   )r   )r2   r   r   r   Ú   s    		z"EUCJPDistributionAnalysis.__init__c             C   s6   | d } | d k r. d | d | d d Sd Sd  S)Nr   é    r4   r5   r   r    r   )r   r,   r"   r   r   r   r!   à   s    
z#EUCJPDistributionAnalysis.get_order)r-   r.   r/   r   r!   r   r   )r2   r   rH   Ù   s   rH   N)Ú	euctwfreqr   r   r   Ú	euckrfreqr   r   r   Ú
gb2312freqr   r	   r
   Úbig5freqr   r   r   Újisfreqr   r   r   Úobjectr   r0   r7   r9   r;   r@   rH   r   r   r   r   Ú<module>   s   I