o
    HëiÎ$  ã                   @   s|   d Z ddlmZ ddlmZ ddlmZ ddlZddlZddl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_util)Úoc_yaml)Úe_print_annotationNc                  C   s   t j} t| ƒ d S )N)r   Úpath_mix_projectÚopen_file_and_move_location)Úpath© r   úC/data/storage/obfuscation/tool/ObjectiveC/oc_function/q_location.pyÚinit	   s   r
   c              
   C   sþ   t j| ddD ]u\}}}dd„ |D ƒ|d d …< dd„ |D ƒ|d d …< |D ]W}|dv r+q$t j ||¡}t|dƒ"}| ¡ }t |¡}t |¡}t	|ƒ}t
|ƒ}t|ƒ}W d   ƒ n1 s\w   Y  t|dƒ}| |¡ W d   ƒ n1 svw   Y  q$qd S )	NT)Útopdownc                 S   s   g | ]}t |ƒr|‘qS r   )ÚisTrue)Ú.0Údr   r   r	   Ú
<listcomp>   s    z/open_file_and_move_location.<locals>.<listcomp>c                 S   s&   g | ]}t j |¡d  tjv r|‘qS )é   )Úosr   Úsplitextr   Úlist_support_open_file_type)r   Úfr   r   r	   r      s   & )zGCDAsyncSocket.hzGCDAsyncSocket.mzWebSocket.hzWebSocket.mÚrÚw)r   Úwalkr   ÚjoinÚopenÚreadr   Úsearch_annotation_and_deleteÚsearch_print_and_deleteÚsearch_property_and_moveÚsearch_method_header_and_moveÚsearch_method_imp_and_moveÚwrite)r   ÚrootÚdirsÚfilesÚnameÚ	file_pathr   Úfile_contentr   r   r	   r      s*   


úÿ€õýr   c                 C   s   |   d¡dko|   d¡dkS )Nz
.xcodeprojFz
.framework)Úendswith)r   r   r   r	   r      s   r   c                 C   sÌ  t  dt j¡}| | ¡}|D ]Õ}d |¡}g }| d¡dkrTt  dt j¡}| |¡}|D ]'}d |¡}	t|	ƒ}	t  d¡}
|
 |	¡}t|ƒdkrS| |	¡ | 	|	dd¡}q,t  d¡}| |¡}|D ]}d |¡}| |¡ q`t|ƒ}|dkrvqg }d |¡}t
|ƒD ]}| |¡ qt
|ƒD ]}t |¡}| |¡ d	t|ƒ d
¡ }| 	|| |d¡}qt
|ƒD ](}d	t|ƒ d
¡ }t dd¡}|d dkrÉdnd}|| | }| 	||d¡}q°|  	d |¡|d¡} q| S )u#    æœç´¢å±žæ€§å¹¶è¿›è¡Œä½ç½®æ›¿æ¢ ú(@interface)(.*?)(@end)Ú ú#ifr   ú(#if)(.*?)(#endif)z(@property)(.*?)(;)Ú
r   Úproperty_cccc_yyyy_llllé   éd   é   ©ÚreÚcompileÚSÚfindallr   ÚcountÚremove_symbolÚlenÚappendÚreplaceÚrangeÚrandomÚchoiceÚremoveÚstrÚzfillÚrandint)r&   Úp1Úa_listÚaÚa_strÚproperty_listÚp3Úc_listÚcÚc_strÚpxÚx_listÚp2Úb_listÚbÚb_strÚlist_lenÚnum_listÚop_aÚxÚindexÚone_numÚtemp_strÚtap_numÚtap_textÚnew_strr   r   r	   r      sT   






€





r   c                 C   sÔ  t  dt j¡}| | ¡}|D ]Ù}d |¡}g }| d¡dkrVt  dt j¡}| |¡}|D ])}d |¡}	t|	ƒ}	t  dt j¡}
|
 |	¡}t|ƒdkrU| |	¡ | 	|	dd¡}q,t  d	t j¡}| |¡}|D ]}d |¡}| |¡ qdt|ƒ}|dkrzqg }d |¡}t
|ƒD ]}| |¡ q…t
|ƒD ]}t |¡}| |¡ d
t|ƒ d¡ }| 	|| |d¡}q‘t
|ƒD ](}d
t|ƒ d¡ }t dd¡}|d dkrÍdnd}|| | }| 	||d¡}q´|  	d |¡|d¡} q| S )u    æœç´¢æ–¹æ³•å£°æ˜Žå¹¶æ›¿æ¢ r(   r)   r*   r   r+   ú)(-|\+)( {0,})(\()(.*?)(\))(.*?)( {0,})(;)r,   r   z"(-|\+)( {0,})(\()(.*?)(\))(.*?)(;)Úheader_cccc_yyyy_llllr.   r/   r0   r1   )r&   rB   rC   rD   rE   Úmethod_header_listrG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r   r   r	   r   N   sT   





€




r   c           (      C   s:  t  dt j¡}| | ¡}|D ]‹}d |¡}g }g }t  dt j¡}| |¡}|D ]5}	d |	d ¡}
|
 ¡ }
t|
ƒ}
t  dt j¡}| |
¡}t|ƒdkr]| d |	¡¡ | 	d |	¡dd¡}q(t|ƒ}t  dt j¡}| |¡}g }g }d |¡}|D ]	}| 	|dd¡}qyt
t|ƒƒD ])}|| }d |dd	… ¡}d
t|ƒ d¡ }| 	||d¡}| |¡ | |¡ q‰t|ƒ}t
|ƒD ]:}|| }d}||d krÌd}n||d  }t  d||f t j¡}| |¡}|D ]}d |dd	… ¡}| |¡ qäq»t
t|ƒƒD ] }|| }|| }|| }| 	||d¡}| 	||d¡}|||< qüt|ƒdkr%qt|ƒ} g }!d |¡}t
| ƒD ]}"|! |"¡ q4t
| ƒD ]}t |!¡}#|! |#¡ dt|#ƒ d¡ }$| 	|| |$d¡}qAt
| ƒD ]*}dt|ƒ d¡ }t dd¡}%|%d dkrdnd}&|| |& }'| 	||'d¡}qe|  	d |¡|d¡} q| S )u    è°ƒæ¢å‡½æ•°å®žçŽ° z(@implementation)(.*?)(@end)r)   r+   r   r[   r   r,   NéÿÿÿÿÚtemp_cccc_yyyy_llllr.   z@endz(%s)({)(.*)(})(.*)(%s)Úimp_cccc_yyyy_llllr/   r0   )r2   r3   r4   r5   r   Ústripr7   r8   r9   r:   r;   r?   r@   r<   r=   r>   rA   )(r&   rB   rC   rD   rE   Úmethod_imp_listÚif_listrM   rN   rO   rP   rK   rL   rG   rH   Úold_method_listÚtemp_method_listr$   rU   rI   Úmethod_nameÚ	temp_nameÚold_list_lenÚfirstÚsecondÚp4Úd_listr   ÚmethodÚold_textÚ	temp_textÚorigin_valueÚ
method_lenrR   rT   rV   rW   rX   rY   Únew_textr   r   r	   r   }   s’   




€



þ



r   c                 C   sb   t  dt j¡}| | ¡}|D ]}d| d }|  |d¡} q|  d¡dks+|  d¡dkr/t| ƒS | S )Nz{([^\{\}]*?)}Ú{Ú}ú;r   )r2   r3   r4   r5   r:   r6   r7   )ÚstringrB   ÚaListrD   r   r   r	   r7   Ò   s   
r7   )Ú__doc__Ú
ObjectiveCr   r   ÚObjectiveC.oc_functionr   r   r2   r<   r
   r   r   r   r   r   r7   r   r   r   r	   Ú<module>   s    //U