o
    5ti                     @   sz   d Z ddlZddlZddlmZ ddlmZ ddlmZmZ ddl	m
Z
 ddlmZ d	ed
efddZG dd deZdS )zA
.. codeauthor:: Tsuyoshi Hombashi <tsuyoshi.hombashi@gmail.com>
    N)Pattern)Final)ErrorReasonValidationError)is_null_string   )NameSanitizernamereturnc                 C   s   |   S N)strip)r	    r   Q/home/ubuntu/.local/lib/python3.10/site-packages/pytablewriter/sanitizer/_base.py_preprocess   s   r   c                   @   st   e Zd Zeejdee fddZeejdee fddZ	dddZ
dd
edefddZdeddfddZdS )VarNameSanitizerr
   c                 C      d S r   r   selfr   r   r   _invalid_var_name_head_re      z*VarNameSanitizer._invalid_var_name_head_rec                 C   r   r   r   r   r   r   r   _invalid_var_name_re   r   z%VarNameSanitizer._invalid_var_name_reNc                 C   s   |  | j d S r   )	_validate_valuer   r   r   r   validate   s   zVarNameSanitizer.validate replacement_textc              
   C   s   | j || j}tt|| j|d ug}|r | jd|}n| j|}|d ur7| | | jd| }|s;dS z| | W |S  t	ys } z$|j
tjkra|jdu rh|d7 }W Y d }~|S W Y d }~|S W Y d }~|S d }~ww )Nr   F_)r   sub_stranyr   r   searchendr   r   reasonr   RESERVED_NAMEreusable_name)r   r   var_nameis_require_remove_headmatcher   r   r   sanitize"   s8   

zVarNameSanitizer.sanitizevaluec                 C   s   |  | t|}| |rt|ddtjd|d| j|}|d ur4tdt	
| tjd| j|}|d urMtdt	
| tjdd S )Nsz  is a reserved keyword by pythonF)descriptionr"   r$   reserved_namez-invalid char found in the variable name: '{}')r,   r"   z9the first character of the variable name is invalid: '{}')_validate_null_stringr   _is_reserved_keywordr   r   r#   r   r    formatreescapegroupINVALID_CHARACTERr   )r   r*   unicode_var_namer'   r   r   r   r   A   s4   


zVarNameSanitizer._validate)r
   N)r   )__name__
__module____qualname__propertyabcabstractmethodr   strr   r   r   r)   r   r   r   r   r   r      s    
r   )__doc__r:   r1   r   typingr   pathvalidate.errorr   r   typepyr   
_interfacer   r<   r   r   r   r   r   r   <module>   s    