B
    v9aÿ  ã               @   s€   d dl Z d dlmZ G dd„ dƒZe ¡  dd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
edkr|d dlmZ edddd dS )é    N)ÚidleConfc               @   s2   e Zd Zdd„ Zedd„ ƒZdd„ Zd
dd	„ZdS )ÚFormatParagraphc             C   s
   || _ d S )N)Úeditwin)Úselfr   © r   ú/usr/lib/python3.7/paragraph.pyÚ__init__   s    zFormatParagraph.__init__c             C   s   t jdddddd| _d S )NÚ
extensionsr   z	max-widthÚintéH   )ÚtypeÚdefault)r   Z	GetOptionÚ	max_width)Úclsr   r   r   Úreload   s    zFormatParagraph.reloadc             C   s
   d | _ d S )N)r   )r   r   r   r   Úclose    s    zFormatParagraph.closeNc       	      C   sà   |d kr| j n|}| jj}| j ¡ \}}|rF|rF| ||¡}t|ƒ}nt|| d¡ƒ\}}}}|rpt|||ƒ}n
t	||ƒ}| 
ddd¡ ||krÆ| d|¡ | ¡  | ||¡ | ||¡ | ¡  n| d|¡ | d¡ dS )NÚinsertZselz1.0ÚendÚbreak)r   r   ÚtextZget_selection_indicesÚgetÚget_comment_headerÚfind_paragraphÚindexÚreformat_commentÚreformat_paragraphZ
tag_removeZmark_setZundo_block_startÚdeleter   Zundo_block_stopZsee)	r   ZeventÚlimitr   ÚfirstÚlastÚdataÚcomment_headerÚnewdatar   r   r   Úformat_paragraph_event#   s(    



z&FormatParagraph.format_paragraph_event)N)Ú__name__Ú
__module__Ú__qualname__r   Úclassmethodr   r   r#   r   r   r   r   r      s   r   c       
      C   sF  t t| d¡ƒ\}}|  d| d| ¡}x:|  d| dd¡rbt|ƒrb|d }|  d| d| ¡}q*W |}t|ƒ}t|ƒ}x<t|ƒ|kr´t||d … ƒs´|d }|  d| d| ¡}qzW d| }|d }|  d| d| ¡}xJ|dkr$t|ƒ|kr$t||d … ƒs$|d }|  d| d| ¡}qÜW d|d  }	|	|||  |	|¡fS )NÚ.z%d.0z%d.endú<r   é   r   )Úmapr
   Úsplitr   ZcompareÚis_all_whiter   Úlen)
r   ZmarkÚlinenoÚcolÚlineZfirst_linenor!   Zcomment_header_lenr   r   r   r   r   r   L   s,    r   c             C   s€  |   d¡}d}t|ƒ}x ||k r6t|| ƒr6|d }qW ||krD| S t|| ƒ}|d |k r~t||d  ƒs~t||d  ƒ}n|}|d |… }|}xÂ||k rTt|| ƒsTt  d|| ¡}	xŒtdt|	ƒdƒD ]x}
|	|
 }|sàqÎt||  ¡ ƒ|kr||kr| | ¡ ¡ |}|| d }|
d t|	ƒk rÎ|	|
d  dkrÎ|d }qÎW |d }q”W | | ¡ ¡ | 	||d … ¡ d 
|¡S )NÚ
r   r*   z(\s+)é   ú )r,   r.   r-   Ú
get_indentÚreÚrangeÚ
expandtabsÚappendÚrstripÚextendÚjoin)r    r   ÚlinesÚiÚnZindent1Zindent2ÚnewÚpartialZwordsÚjZwordr   r   r   r   q   s<    

 r   c                s„   t ˆ ƒ‰d ‡fdd„|  d¡D ƒ¡} t|t ˆ ƒ dƒ}t| |ƒ}| d¡}d}|d shd}|d d… }d ‡ fdd„|D ƒ¡| S )Nr2   c             3   s   | ]}|ˆ d … V  qd S )Nr   )Ú.0r1   )Úlcr   r   ú	<genexpr>š   s    z#reformat_comment.<locals>.<genexpr>é   Ú éÿÿÿÿc             3   s   | ]}ˆ | V  qd S )Nr   )rC   r1   )r!   r   r   rE   ©   s    )r.   r<   r,   Úmaxr   )r    r   r!   Zformat_widthr"   Zblock_suffixr   )r!   rD   r   r   •   s    

r   c             C   s   t  d| ¡d k	S )Nz^\s*$)r6   Úmatch)r1   r   r   r   r-   «   s    r-   c             C   s   t  d| ¡ ¡ S )Nz	^([ \t]*))r6   rJ   Úgroup)r1   r   r   r   r5   °   s    r5   c             C   s"   t  d| ¡}|d krdS | d¡S )Nz^([ \t]*#*)rG   r*   )r6   rJ   rK   )r1   Úmr   r   r   r   ´   s     r   Ú__main__)Úmainz idlelib.idle_test.test_paragraphr3   F)Ú	verbosityÚexit)r6   Zidlelib.configr   r   r   r   r   r   r-   r5   r   r$   ZunittestrN   r   r   r   r   Ú<module>   s   4%$