
    Ofcn                     f    d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	m
Z
mZmZ  G d de          ZdS )   )CharSetProber)CodingStateMachine)LanguageFilterProbingStateMachineState)HZ_SM_MODELISO2022CN_SM_MODELISO2022JP_SM_MODELISO2022KR_SM_MODELc                   f     e Zd ZdZd	 fd	Z fdZed             Zed             Zd Z	d Z
 xZS )
EscCharSetProberz
    This CharSetProber uses a "code scheme" approach for detecting encodings,
    whereby easily recognizable escape or shift sequences are relied on to
    identify these encodings.
    Nc                    t          t          |                               |           g | _        | j        t
          j        z  rX| j                            t          t                               | j                            t          t                               | j        t
          j        z  r,| j                            t          t                               | j        t
          j        z  r,| j                            t          t                               d | _        d | _        d | _        d | _        |                                  d S )N)lang_filter)superr   __init__	coding_smr   r   CHINESE_SIMPLIFIEDappendr   r   r	   JAPANESEr
   KOREANr   active_sm_count_detected_charset_detected_language_statereset)selfr   	__class__s     1lib/python3.11/site-packages/chardet/escprober.pyr   zEscCharSetProber.__init__*   s   %%..;.GGGn?? 	JN!!"4["A"ABBBN!!"45G"H"HIIIn55 	JN!!"45G"H"HIIIn33 	JN!!"45G"H"HIII#!%"&

    c                     t          t          |                                            | j        D ] }|sd|_        |                                 !t          | j                  | _        d | _        d | _        d S )NT)	r   r   r   r   activelenr   r   r   )r   r   r   s     r   r   zEscCharSetProber.reset:   s    %%++--- 	 	I #IOO"4>22!%"&r   c                     | j         S Nr   r   s    r   charset_namezEscCharSetProber.charset_nameE   s    %%r   c                     | j         S r$   )r   r&   s    r   languagezEscCharSetProber.languageI   s    &&r   c                     | j         rdS dS )NgGz?g        r%   r&   s    r   get_confidencezEscCharSetProber.get_confidenceM   s    ! 	44r   c                    |D ]}| j         D ]}|r|j        s|                    |          }|t          j        k    r?d|_        | xj        dz  c_        | j        dk    rt          j        | _        | j	        c c S p|t          j
        k    rAt          j        | _        |                                | _        |j        | _        | j	        c c S | j	        S )NFr       )r   r!   
next_stater   ERRORr   r   NOT_MEr   stateITS_MEFOUND_ITget_coding_state_machiner   r)   r   )r   byte_strcr   coding_states        r   feedzEscCharSetProber.feedS   s    	& 	&A!^ & &	  	(8 (33A66<#55 
&',I$((A-((+q0 *&2&9#z)))))* "\%88 &"."7DK-6-O-O-Q-QD*.7.@D+:%%%%%	&&  zr   r$   )__name__
__module____qualname____doc__r   r   propertyr'   r)   r+   r8   __classcell__)r   s   @r   r   r   #   s               	' 	' 	' 	' 	' & & X& ' ' X'        r   r   N)charsetproberr   codingstatemachiner   enumsr   r   r   escsmr   r	   r
   r   r    r   r   <module>rD      s   8 ) ( ( ( ( ( 2 2 2 2 2 2 = = = = = = = = = =( ( ( ( ( ( ( ( ( ( ( (B B B B B} B B B B Br   