B
    x.;]Ã$  ã               @   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 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 )é   )Ú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               @   sL   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   s0   d | _ d | _d | _d | _d | _d | _|  ¡  d S )N)Ú_char_to_freq_orderÚ_table_sizeÚtypical_distribution_ratioÚ_doneÚ_total_charsÚ_freq_charsÚreset)Úself© r   ú7lib/python3.7/site-packages/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   sX   |dkr|   |¡}nd}|dkrT|  jd7  _|| jk rTd| j| krT|  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   sT   | j dks| j| jkr| jS | j | jkrN| j| j | j | j  }|| jk rN|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   Ú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‡  ZS )ÚEUCTWDistributionAnalysisc                s$   t t| ƒ ¡  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   s0   |d }|dkr(d|d  |d  d S dS d S )Nr   éÄ   é^   r   é¡   r    r   )r   r,   Ú
first_charr   r   r   r!   x   s    z#EUCTWDistributionAnalysis.get_order)r-   r.   r/   r   r!   Ú__classcell__r   r   )r2   r   r0   q   s   r0   c                   s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚEUCKRDistributionAnalysisc                s$   t t| ƒ ¡  t| _t| _t| _d S )N)	r1   r8   r   r   r   r   r   r   r   )r   )r2   r   r   r   …   s    z"EUCKRDistributionAnalysis.__init__c             C   s0   |d }|dkr(d|d  |d  d S dS d S )Nr   é°   r4   r   r5   r    r   )r   r,   r6   r   r   r   r!   ‹   s    z#EUCKRDistributionAnalysis.get_order)r-   r.   r/   r   r!   r7   r   r   )r2   r   r8   „   s   r8   c                   s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚGB2312DistributionAnalysisc                s$   t t| ƒ ¡  t| _t| _t| _d S )N)	r1   r:   r   r   r   r	   r   r
   r   )r   )r2   r   r   r   ˜   s    z#GB2312DistributionAnalysis.__init__c             C   s>   |d |d  }}|dkr6|dkr6d|d  | d S dS d S )Nr   r   r9   r5   r4   r    r   )r   r,   r6   Úsecond_charr   r   r   r!   ž   s    z$GB2312DistributionAnalysis.get_order)r-   r.   r/   r   r!   r7   r   r   )r2   r   r:   —   s   r:   c                   s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚBig5DistributionAnalysisc                s$   t t| ƒ ¡  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   sX   |d |d  }}|dkrP|dkr:d|d  | d d S d|d  | d S ndS d S )	Nr   r   é¤   r5   é   é?   é@   r    r   )r   r,   r6   r;   r   r   r   r!   ±   s    z"Big5DistributionAnalysis.get_order)r-   r.   r/   r   r!   r7   r   r   )r2   r   r<   ª   s   r<   c                   s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚSJISDistributionAnalysisc                s$   t t| ƒ ¡  t| _t| _t| _d S )N)	r1   rA   r   r   r   r   r   r   r   )r   )r2   r   r   r   Á   s    z!SJISDistributionAnalysis.__init__c             C   sr   |d |d  }}|dkr0|dkr0d|d  }n&|dkrR|dkrRd|d d  }nd	S || d
 }|dkrnd	}|S )Nr   r   é   éŸ   é¼   éà   éï   é   r    r@   é   r   )r   r,   r6   r;   r#   r   r   r   r!   Ç   s    z"SJISDistributionAnalysis.get_order)r-   r.   r/   r   r!   r7   r   r   )r2   r   rA   À   s   rA   c                   s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚEUCJPDistributionAnalysisc                s$   t t| ƒ ¡  t| _t| _t| _d S )N)	r1   rI   r   r   r   r   r   r   r   )r   )r2   r   r   r   Ú   s    z"EUCJPDistributionAnalysis.__init__c             C   s0   |d }|dkr(d|d  |d  d S dS d S )Nr   é    r4   r5   r   r    r   )r   r,   r"   r   r   r   r!   à   s    z#EUCJPDistributionAnalysis.get_order)r-   r.   r/   r   r!   r7   r   r   )r2   r   rI   Ù   s   rI   N)Z	euctwfreqr   r   r   Z	euckrfreqr   r   r   Z
gb2312freqr   r	   r
   Zbig5freqr   r   r   Zjisfreqr   r   r   Úobjectr   r0   r8   r:   r<   rA   rI   r   r   r   r   Ú<module>   s   I