U
    W hB  ã                   @   sV   d Z ddlmZmZ ddlmZmZ ddddœZdd„ Zdd	„ Z	d
d„ Z
ddd„ZdS )z*Utilities for handling prefix dictionariesé   )ÚU_EMPTY_STRINGÚU_PLUS)Úformat_numberÚPhoneNumberFormatZzh_Hant)Úzh_TWÚzh_HKÚzh_MOc                 C   s   | dko| dko| dkS )NÚzhÚjaÚko© )Úlangr   r   úU/var/www/html/arya_register/venvv2/lib/python3.8/site-packages/phonenumbers/prefix.pyÚ_may_fall_back_to_english	   s    r   c                 C   sH   |d k	r,|d k	rd| ||f S d| |f S n|d k	r@d| |f S | S d S )Nz%s_%s_%sú%s_%sr   )r   ÚscriptÚregionr   r   r   Ú_full_locale   s    r   c                 C   s°   t |||ƒ}|tkr,t| | kr,| t|  S || kr<| | S |dk	r`d||f }|| kr`| | S |dk	r„d||f }|| kr„| | S || kr”| | S t|ƒr¨|  dd¡S dS dS )zFReturn the entry in the dictionary for the given language information.Nr   Úen)r   Ú_LOCALE_NORMALIZATION_MAPr   Úget)Zlangdictr   r   r   Zfull_localeZlang_scriptZlang_regionr   r   r   Ú
_find_lang   s(    
ÿr   Nc           
      C   sv   t |tjƒ}| t¡stdƒ‚t|ddƒD ]F}|dd| … }|| kr*t| | |||ƒ}	|	dk	rh|	  S t  S q*tS )aG  Return a text description of a PhoneNumber for the given language.

    Arguments:
    data -- Prefix dictionary to lookup up number in.
    longest_prefix -- Length of the longest key in data.
    numobj -- The PhoneNumber object for which we want to get a text description.
    lang -- A 2-letter lowercase ISO 639-1 language code for the language in
                  which the description should be returned (e.g. "en")
    script -- A 4-letter titlecase (first letter uppercase, rest lowercase)
                  ISO script code as defined in ISO 15924, separated by an
                  underscore (e.g. "Hant")
    region --  A 2-letter uppercase ISO 3166-1 country code (e.g. "GB")

    Returns a text description in the given language code, for the given phone
    number's area, or an empty string if no description is available.z"Expect E164 number to start with +é    éÿÿÿÿr   N)	r   r   ÚE164Ú
startswithr   Ú	ExceptionÚranger   r   )
ÚdataZlongest_prefixÚnumobjr   r   r   Ze164_numÚ
prefix_lenÚprefixÚnamer   r   r   Ú_prefix_description_for_number;   s    

r#   )NN)Ú__doc__Úutilr   r   Úphonenumberutilr   r   r   r   r   r   r#   r   r   r   r   Ú<module>   s   