o
    HëiÅ3  ã                   @   sŒ   d Z ddlmZ ddl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d„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )u   
ä¿®æ”¹æ–‡ä»¶å
é    )Úoc_utilN)Úoc_yaml)Úoc_toolc                  C   s   t j} t| ƒ t| ƒ d S )N)r   Úpath_mix_projectÚrename_fileÚreplace_file_content)Úpath© r	   ú?/data/storage/obfuscation/tool/ObjectiveC/oc_function/f_file.pyÚmodify_oc_file_name	   s   r   c              	   C   sò  t  ¡ }tƒ }tj| ddD ]è\}}}dd„ |D ƒ|d d …< dd„ |D ƒ|d d …< |D ]Ê}|tjd ks;|tjd kr<q+tj |¡}|d t	j
vrJq+d	}| d
¡dkrtt|d |ƒƒdkr_q+|t|d |ƒ |d  }tj ||¡}	tj ||¡}
t |	|
¡ | d| dd¡|f ¡ | d
¡dkrõ|d  d
¡}|d }|d }t||ƒ}t||ƒ}t|ƒdkrºt|ƒdkrºq+t|ƒdkrÂ|}t|ƒdkrÊ|}|d
 | |d  }tj ||¡}	tj ||¡}
t |	|
¡ | d| dd¡|f ¡ q+qd S )NT©Útopdownc                 S   s   g | ]}t |ƒr|‘qS r	   )ÚisTrue©Ú.0Údr	   r	   r
   Ú
<listcomp>   s    zrename_file.<locals>.<listcomp>c                 S   s   g | ]	}|t jvr|‘qS r	   )r   Úlist_file_not_change)r   Úfr	   r	   r
   r      s    ú.hz.mé   Ú ú+r   u    åŽŸæ–‡ä»¶å:%s è¢«ä¿®æ”¹ä¸º:%s
é(   ú )r   Úget_ignore_log_managerÚget_log_file_managerÚosÚwalkr   Únew_project_namer   Úsplitextr   Úlist_support_file_typeÚcountÚlenÚrandom_one_file_nameÚjoinÚrenameÚwriteÚljustÚsplit)r   Úignore_log_managerÚfile_log_managerÚrootÚdirsÚfilesÚnameÚ	name_listÚnew_nameÚold_pathÚnew_pathÚa_listÚ
first_nameÚsecond_nameÚnew_first_nameÚnew_second_namer	   r	   r
   r      sP   

€ßýr   c                 C   s  t j| ddD ]ÿ\}}}dd„ |D ƒ|d d …< |D ]ì}t j |¡}|d tjv r‹t j ||¡}ttt	j
jƒƒD ]S}t	j
j| }t	j
j| }	t|dƒ}
|
 ¡ }||vr[	 W d   ƒ q7t|||	ƒ}W d   ƒ n1 skw   Y  t|dƒ}
|
 |¡ W d   ƒ n1 s…w   Y  q7|dkrt j ||¡}ttt	j
jƒƒD ]e}t	j
j| }t	j
j| }	t|dƒ0}
|
 ¡ }t|||	ƒ}t|d	| d	|	 ƒ}t||d
 |	d
 ƒ}t||d |	d ƒ}W d   ƒ n1 såw   Y  t|dƒ}
|
 |¡ W d   ƒ n1 sÿw   Y  qŸqqd S )NTr   c                 S   s   g | ]}|  d ¡dkr|‘qS )ú
.frameworkF)Úendswithr   r	   r	   r
   r   :   s    z(replace_file_content.<locals>.<listcomp>r   ÚrÚwzproject.pbxprojÚlibr   r   )r   r   r   r    r   r!   r%   Úranger#   r   Úclass_oc_fileÚfile_name_old_listÚfile_name_new_listÚopenÚreadÚcontent_replacer'   )r   r,   r-   r.   r/   r0   Ú	file_pathÚindexÚold_textÚnew_textr   Úfile_contentr	   r	   r
   r   7   sL   üûÿ€
öÿ€áýr   c                 C   sR  t  d| t j¡}| | ¡}| }|D ]}| ||¡}| ||¡}q| |¡r\|t|ƒ  d¡ ¡ dkr\|t|ƒ  	¡ dkr\|t|ƒdk r\|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ÚSÚfindallÚreplaceÚ
startswithr#   ÚencodeÚisalphaÚisdigitr:   Úsub)rI   rG   rH   Úp1r4   Úfile_new_contentÚaÚnewAr/   ÚnewNameÚcompileRegexr	   r	   r
   rD   \   s$   

>
JrD   c                   C   s   t tjd dƒS )Nu   /æ–‡ä»¶åæ··æ·†æ—¥å¿—.txtr<   )rB   r   Úpath_mixr	   r	   r	   r
   r   q   s   r   c                 C   sP   g d¢}t j | ¡}|d |vrdnd}| tjd k}| ttjƒv}|o'|o'|S )N)r9   z.lprojz	.xcassetsz.appiconsetr   TFz
.xcodeproj)r   r   r    r   Úname_current_projectÚlistr   Úlist_folder_ignore_all)r   Úmy_listÚd_listÚa1Úa2Úa3r	   r	   r
   r   s   s   r   c                 C   s  | t jjv rt jj | ¡}t jj| S | t jv rdS | t jv r.| d|  ¡ t j | ¡ dS | t j	v rB| d|  ¡ t j | ¡ dS | t
jv rV| d|  ¡ t j | ¡ dS | t jv ro| t
jvro| d|  ¡ t j | ¡ dS | t jjv r~| d|  ¡ dS t j}d}t
jD ]}|  |¡r‘|} nq†t| ƒt|ƒ tt jƒ }|t|ƒ | }|t jjv r²t| |ƒS |t jv r¼t| |ƒS |t j	v rÆt| |ƒS |t jjv rÑt| |ƒS |t jjv rÜt| |ƒS t jj |¡ t jj | ¡ t jj |¡ t jj | ¡ t jj |¡ |S )u    éšæœºä¸€ä¸ªæ–‡ä»¶å r   u)   æ–‡ä»¶-ç³»ç»ŸframeworkåŒ…å«å…³é”®è¯:%s
u)   æ–‡ä»¶-å·¥ç¨‹frameworkåŒ…å«å…³é”®è¯:%s
u&   æ–‡ä»¶-ç”¨æˆ·ç™½åå•å«å…³é”®è¯:%s
u    æ–‡ä»¶-å­—ç¬¦ä¸²å«å…³é”®è¯:%s
u'   æ–‡ä»¶-OCFileInfoæ€»è¡¨å«å…³é”®è¯:%s
)r   r?   r@   rF   rA   Úlist_ignore_keywordÚlist_system_framework_wordr'   ÚappendÚlist_project_framework_wordr   Ú#list_user_custom_keyword_not_changeÚlist_string_wordsÚlist_user_arrow_change_keywordÚtotal_wordsÚprefix_fileÚlist_keep_wordr:   r#   Úrandom_namer$   Úall_file_name_list)Úold_nameÚlog_managerrF   r1   Ú	keep_wordÚwordr"   r	   r	   r
   r$   €   sb   





þ






r$   c                 C   sÖ  | dkrdg}t  |¡}t|ƒS | dkr dg}t  |¡}t|ƒS | dkr0dg}t  |¡}t|ƒS | dkrAdd	g}t  |¡}t|ƒS | d
krRg d¢}t  |¡}t|ƒS | dkrcg d¢}t  |¡}t|ƒS | dkrtg d¢}t  |¡}t|ƒS | dkr…g d¢}t  |¡}t|ƒS | dkr–g d¢}t  |¡}t|ƒS | dkr§g d¢}t  |¡}t|ƒS | dkr¸g d¢}t  |¡}t|ƒS | dkrÉg d¢}t  |¡}t|ƒS | dkré| dk réd}g d¢}tdƒD ]	}|t  |¡ }qÛt|ƒS | dkr| dk rd}g d¢}tdƒD ]	}|t  |¡ }qýt|ƒS | dkr.| dk r.d}g d¢}td
ƒD ]
}|t  |¡ }qt|ƒS | dkrQ| d k rQd}g d¢}tdƒD ]
}|t  |¡ }qBt|ƒS d}g d¢}tddƒD ]
}|t  |¡ }q\t|ƒS )!Né   Ú3é   Ú4é   Ú5é   Ú6Ú33é   )Ú7Ú34Ú43é   )Ú8Ú53Ú35Ú44é	   )Ú9Ú63Ú36Ú54Ú45é
   )Ú73Ú37Ú46Ú64Ú55Ú433Ú343Ú334é   )Ú83Ú38Ú47Ú74Ú56Ú65Ú335Ú353Ú533Ú443Ú434Ú344é   )Ú93Ú39Ú84Ú48Ú75Ú57Ú66Ú336Ú363Ú633Ú345Ú354Ú543Ú534Ú435Ú453é   )Ú94Ú49Ú85Ú58Ú67Ú76Ú445Ú454Ú544Ú355Ú535Ú553Ú337Ú373Ú3433Ú4333Ú3343Ú3334é   )Ú95Ú59Ú68Ú86Ú77Ú455Ú545Ú554Ú446Ú464Ú644Ú3344Ú3434Ú3443Ú4433Ú4343Ú4334Ú3335Ú3353Ú3533Ú5333é   é   r   )rv   rx   rz   r|   r   rƒ   rˆ   é   r   é2   )ÚrandomÚchoiceÚget_unique_stringr>   )ÚnumÚnumListÚstr_numÚaListrJ   r	   r	   r
   ro   º   sš   











ro   c                 C   sÆ   d}| D ]\}|dkr|t  ¡  ¡  }q|dkr |t  ¡  ¡  }q|dkr-|t  ¡  ¡  }q|dkr:|t  ¡  ¡  }q|dkrG|t  ¡  ¡  }q|dkrT|t  ¡  ¡  }q|dkr`|t  ¡  ¡  }q|S )	Nr   rv   rx   rz   r|   r   rƒ   rˆ   )	r   ÚthreeÚ
capitalizeÚfourÚfiveÚsixÚsevenÚeightÚnine)Ú
num_stringr/   rä   r	   r	   r
   rã     s$   €rã   )Ú__doc__Ú
ObjectiveCr   r   rá   rL   r   r   r   r   r   rD   r   r   r$   ro   rã   r	   r	   r	   r
   Ú<module>   s    )%:Q