o
    HëiK  ã                   @   sP   d Z ddlZddlZddlmZ ddlmZ dd„ Zdd„ Zd	d
„ Zdd„ Z	dS )u   
æ··æ·†å±€éƒ¨å˜é‡å
é    N)Úoc_yaml)Úoc_utilc                  C   sš   t j} tt jjƒtt jjƒkrtdƒ d S t| ƒ tt j	d d dƒ}t
tt jjƒƒD ]}t jj| }t jj| }| d| dd¡|f ¡ q+| ¡  d S )Nu*   å±€éƒ¨å˜é‡æ–°æ—§åˆ—è¡¨æ•°é‡ä¸ä¸€è‡´!!!u   /Fileæ··æ·†æ—¥å¿—z.txtÚau&   åŽŸå±€éƒ¨å˜é‡å:%s è¢«ä¿®æ”¹ä¸º:%s
é   ú )r   Úpath_mix_projectÚlenÚclass_oc_fileÚlocal_variable_old_listÚlocal_variable_new_listÚprintÚmix_local_variableÚopenÚpath_mixÚrangeÚwriteÚljustÚclose)ÚpathÚlocal_variable_mix_logÚindexÚold_textÚnew_text© r   úI/data/storage/obfuscation/tool/ObjectiveC/oc_function/v_local_variable.pyÚinit   s   r   c                 C   s&   |   d¡dko|   d¡dko| tjvS )Nz
.xcodeprojFz
.framework)Úendswithr   Úlist_folder_ignore_all)Údr   r   r   ÚisTrue   s   &r   c              
   C   s   t j| ddD ]†\}}}dd„ |D ƒ|d d …< dd„ |D ƒ|d d …< |D ]h}|dkr.tdƒ t j ||¡}t|dƒ0}| ¡ }ttt	j
jƒƒD ]}t	j
j| }	t	j
j| }
| |	¡d	krbt||	|
ƒ}qGW d   ƒ n1 smw   Y  t|d
ƒ}| |¡ W d   ƒ n1 s‡w   Y  q$qd S )NT)Útopdownc                 S   s   g | ]}t |ƒr|‘qS r   )r   )Ú.0r   r   r   r   Ú
<listcomp>   s    z&mix_local_variable.<locals>.<listcomp>c                 S   s.   g | ]}t j |¡d  tjv s|dkr|‘qS )é   Úcontents)Úosr   Úsplitextr   Úlist_support_open_file_type)r!   Úfr   r   r   r"      s   . r$   zxxcc--------------------Úrr   Úw)r%   Úwalkr   r   Újoinr   Úreadr   r   r   r	   r
   r   ÚcountÚreplace_local_variabler   )r   ÚrootÚdirsÚfilesÚnameÚ	file_pathr(   Úfile_contentr   r   r   r   r   r   r      s.   €üþÿ€õýr   c           
      C   sJ  t  d| ¡}| | ¡}|D ]}| ||¡}|  ||¡} q|  |¡rX| t|ƒ  d¡ ¡ dkrX| t|ƒ  ¡ dkrX| t|ƒdk rX| d t|ƒd … }| ||¡}|  ||d¡} |  	|¡r£| dt|ƒ   d¡ ¡ dkr£| dt|ƒ   ¡ dkr£| dt|ƒ  dkr£| t| ƒt|ƒ d d … }| ||¡}t  d| ¡}	|	 
|| ¡} | S )Nz[^a-zA-Z0-9_]%s[^a-zA-Z0-9_]zUTF-8FÚ_r#   éÿÿÿÿz%s$)ÚreÚcompileÚfindallÚreplaceÚ
startswithr   ÚencodeÚisalphaÚisdigitr   Úsub)
r5   r   r   Úp1Úa_listr   Úbr3   ÚnewNameÚcompileRegexr   r   r   r/   *   s"   

>
Jr/   )
Ú__doc__r%   r8   Ú
ObjectiveCr   r   r   r   r   r/   r   r   r   r   Ú<module>   s    