
    z%i=                        	 d dl Z d dlmZ d dlmZ d dlmZ  G d d      Zej                          d Z	d Z
d	 Zd
 Zd Zd Z e j                  d      Zd Z G d d      Z G d d      Z G d d      Zedk(  rd dlmZ  eddd       yy)    N)askyesno)
askinteger)idleConfc                   2    e Zd Z	 d Zed        Zd ZddZy)FormatParagraphc                     || _         y Neditwinselfr   s     B/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/format.py__init__zFormatParagraph.__init__   	        c                 B    t        j                  ddddd      | _        y )N
extensionsr   z	max-widthintH   )typedefault)r   	GetOption	max_width)clss    r   reloadzFormatParagraph.reload"   s!     **<9J+6UBPr   c                     d | _         y r	   r
   r   s    r   closezFormatParagraph.close'   s	    r   Nc                 l   	 || j                   n|}| j                  j                  }| j                  j                         \  }}|r |r|j	                  ||      }t        |      }n t        ||j                  d            \  }}}}|rt        |||      }nt        ||      }|j                  ddd       ||k7  rW|j                  d|       |j                          |j                  ||       |j                  ||       |j                          n|j                  d|       |j!                  d       y)Ninsertsel1.0endbreak)r   r   textget_selection_indicesgetget_comment_headerfind_paragraphindexreformat_commentreformat_paragraph
tag_removemark_setundo_block_startdeleter    undo_block_stopsee)	r   eventlimitr%   firstlastdatacomment_headernewdatas	            r   format_paragraph_eventz&FormatParagraph.format_paragraph_event*   s   
	 #(-U||  ll88:tT88E4(D/5N #4H)=> .E4&tUNCG(u5Gue,d?MM(E*!!#KKt$KKw'  "MM(D)r   r	   )__name__
__module____qualname__r   classmethodr   r   r:    r   r   r   r      s,      P P$r   r   c                 T   	 t        t        |j                  d            \  }}| j                  d|z  d|z        }| j	                  d|z  dd      rJt        |      r?|dz   }| j                  d|z  d|z        }| j	                  d|z  dd      rt        |      r?|}t        |      }t        |      }t        |      |k(  rHt        ||d        s:|dz   }| j                  d|z  d|z        }t        |      |k(  rt        ||d        s:d|z  }|dz
  }| j                  d|z  d|z        }|dkD  r[t        |      |k(  rMt        ||d        s?|dz
  }| j                  d|z  d|z        }|dkD  rt        |      |k(  rt        ||d        s?d|dz   z  }	|	||| j                  |	|      fS )N.z%d.0z%d.end<r#      r   )mapr   splitr'   compareis_all_whiter(   len)
r%   marklinenocollinefirst_linenor8   comment_header_lenr6   r5   s
             r   r)   r)   S   s   
 c4::c?+KFC88FVOX%67D ,,vU
3T8J!xxF):; ,,vU
3T8J L'-N^, T
"N
2t$6$789!xxF):; T
"N
2t$6$789 F?D AF88FVOX%67D
1* &6t$6$789!xxF):;	 1* &6t$6$789 fQhE$(===r   c                 b   	 | j                  d      }d}t        |      }||k  r't        ||         r|dz   }||k  rt        ||         r||k\  r| S t        ||         }|dz   |k  r#t        ||dz            st        ||dz            }n|}|d | }|}||k  rt        ||         st	        j                   d||         }	t        dt        |	      d      D ]z  }
|	|
   }|st        ||z   j                               |kD  r&||k7  r!|j                  |j                                |}||z   dz   }|
dz   t        |	      k  sj|	|
dz      dk7  sv|dz   }| |dz   }||k  rt        ||         s|j                  |j                                |j                  ||d         dj                  |      S )N
r   rC   z(\s+)    )rE   rH   rG   
get_indentrerange
expandtabsappendrstripextendjoin)r7   r4   linesinindent1indent2newpartialwordsjwords               r   r,   r,   x   s   =JJtE	AE
A
a%Lq*aC a%Lq*Avq"GsQw|E!A#J/U1Q3Z(
)CG
a%U1X.58,q#e*a( 
	(A8DGdN..01E9g%

7>>+,!ns*GsSZE!A#J#$5!C-
	( aC a%U1X. JJw~~ JJuQRy99S>r   c                 0   	 t              dj                  fd| j                  d      D              } t        |t              z
  d      }t	        | |      }|j                  d      }d}|d   sd}|d d }dj                  fd|D              |z   S )NrP   c              3   (   K   | ]	  }|d    y wr	   r?   ).0rL   lcs     r   	<genexpr>z#reformat_comment.<locals>.<genexpr>   s     <4T"#Y<       c              3   (   K   | ]	  }|z     y wr	   r?   )rg   rL   r8   s     r   ri   z#reformat_comment.<locals>.<genexpr>   s     =T^D(=rj   )rH   rZ   rE   maxr,   )r7   r4   r8   format_widthr9   block_suffixrh   s     `   @r   r+   r+      s    I 
^	B99<4::d+;<<D us>22B7L |4GmmD!G
 L2;#2,99=W==LLr   c                 4    	 t        j                  d|       d uS )Nz^\s*$)rT   matchrL   s    r   rG   rG      s    988Hd#4//r   c                 L    	 t        j                  d|       j                         S )Nz	^([ \t]*)rT   rs   grouprt   s    r   rS   rS      s    988L$'--//r   c                 X    	 t        j                  d|       }|y|j                  d      S )Nz^([ \t]*#*)rl   rC   rv   )rL   ms     r   r(   r(      s.     	&Ay771:r   z[ \t]*c                     	 t         j                  |       }|j                         t        |j	                         j                  |            fS r	   )_line_indent_rers   r#   rH   rw   rV   )rL   tabwidthry   s      r   get_line_indentr}      s@    
 	d#A557C	,,X6777r   c                   V    e Zd Z	 d Zd Zd ZddZddZddZddZ	dd	Z
dd
Zd Zy)FormatRegionc                     || _         y r	   r
   r   s     r   r   zFormatRegion.__init__   r   r   c                 Z   	 | j                   j                  }| j                   j                         \  }}|r+|r)|j                  |dz         }|j                  |dz         }n"|j                  d      }|j                  d      }|j	                  ||      }|j                  d      }||||fS )Nz
 linestartz-1c lineend +1czinsert linestartzinsert lineend +1crP   )r   r%   r&   r*   r'   rE   )r   r%   r5   r6   headtailcharsr[   s           r   
get_regionzFormatRegion.get_region   s    	 ||  ll88:tT::el23D::d%667D::01D::23Dt$D!T5%''r   c                 x   	 | j                   j                  }dj                  |      }||k(  r|j                          y |j	                  ddd       |j                  d|       |j                          |j                  ||       |j                  ||       |j                          |j                  d|d       y )NrP   r!   r"   r#   r    )r   r%   rZ   bellr-   r.   r/   r0   r    r1   tag_add)r   r   r   r   r[   r%   newcharss          r   
set_regionzFormatRegion.set_region   s    		 ||  99U#uIIKue,h%D$D(#UD(+r   Nc                 Z   	 | j                         \  }}}}t        t        |            D ]j  }||   }|st        || j                  j
                        \  }}	|	| j                  j                  z   }	| j                  j                  |	      ||d  z   ||<   l | j                  ||||       yNr$   )	r   rU   rH   r}   r   r|   indentwidth_make_blanksr   
r   r3   r   r   r   r[   posrL   raw	effectives
             r   indent_region_eventz FormatRegion.indent_region_event  s    .#'??#4 dE5U$ 	OC:D!0t||7L7L!MY%(@(@@	!\\66yADJNc
	O 	dE51r   c                 n   	 | j                         \  }}}}t        t        |            D ]t  }||   }|st        || j                  j
                        \  }}	t        |	| j                  j                  z
  d      }	| j                  j                  |	      ||d  z   ||<   v | j                  ||||       y)Nr   r$   )
r   rU   rH   r}   r   r|   ro   r   r   r   r   s
             r   dedent_region_eventz FormatRegion.dedent_region_event  s    .#'??#4 dE5U$ 	OC:D!0t||7L7L!MY	DLL,D,D DaH	!\\66yADJNc
	O 	dE51r   c                     	 | j                         \  }}}}t        t        |      dz
        D ]  }||   }d|z   ||<    | j                  ||||       y)NrC   ##r$   r   rU   rH   r   r   r3   r   r   r   r[   r   rL   s           r   comment_region_eventz!FormatRegion.comment_region_event   sg    	 $(??#4 dE5Ua( 	%C:DE#J	% 	dE51r   c                     	 | j                         \  }}}}t        t        |            D ]*  }||   }|s|d d dk(  r|dd  }n|d d dk(  r|dd  }|||<   , | j                  ||||       y)NrQ   r   rC   #r$   r   r   s           r   uncomment_region_eventz#FormatRegion.uncomment_region_event,  s    	
 $(??#4 dE5U$ 	C:DBQx4ABxbqSABxE#J	 	dE51r   c                 $   	 | j                         \  }}}}| j                         }|y t        t        |            D ]<  }||   }|st	        ||      \  }	}
t        |
|      \  }}d|z  d|z  z   ||	d  z   ||<   > | j                  ||||       y)N	rR   r$   )r   _asktabwidthrU   rH   r}   divmodr   )r   r3   r   r   r   r[   r|   r   rL   r   r   ntabsnspacess                r   tabify_region_eventz FormatRegion.tabify_region_event?  s    J#'??#4 dE5$$&U$ 	GC:D!0x!@Y!'	8!<w!E\C'M9DJFc
	G 	dE51r   c                     	 | j                         \  }}}}| j                         }|y t        t        |            D ]  }||   j	                  |      ||<    | j                  ||||       yr   )r   r   rU   rH   rV   r   )r   r3   r   r   r   r[   r|   r   s           r   untabify_region_eventz"FormatRegion.untabify_region_eventN  sv    8#'??#4 dE5$$&U$ 	9Cs..x8E#J	9dE51r   c                 v    	 t        dd| j                  j                  | j                  j                  dd      S )Nz	Tab widthzColumns per tab? (2-16)rQ      parentinitialvalueminvaluemaxvalue)r   r   r%   r   r   s    r   r   zFormatRegion._asktabwidthY  s8    %%<<$$11 	r   r	   )r;   r<   r=   r   r   r   r   r   r   r   r   r   r   r?   r   r   r   r      s7    $(,,0


&	r   r   c                        e Zd Z	 d Zd Zd Zy)Indentsc                     || _         y r	   r
   r   s     r   r   zIndents.__init__g  r   r   c                     | j                   }|j                  }t        ddd|   z   dz   d|   z   dz   dz   |j                        r| |_        d	|_        y
)NzToggle tabsz
Turn tabs )onoffz?
Indent width )zwill bez
remains atz 8.z!
 Note: a tab is always 8 columns)r      r$   )r   usetabsr   r%   r   )r   r3   r   r   s       r   toggle_tabs_eventzIndents.toggle_tabs_eventj  st    ,,//]733 !'01389 33 \\# #*kGO #$Gr   c                     | j                   }t        dd|j                  |j                  dd      }|r"||j                  k7  r|j                  s||_        y)NzIndent widthz6New indent width (2-16)
(Always use 8 when using tabs)rQ   r   r   r$   )r   r   r%   r   r   )r   r3   r   r`   s       r   change_indentwidth_eventz Indents.change_indentwidth_eventz  sT    ,, K &22 3'---goo"%Gr   N)r;   r<   r=   r   r   r   r?   r   r   r   r   d  s     r   r   c                       e Zd Zd ZddZy)Rstripc                     || _         y r	   r
   r   s     r   r   zRstrip.__init__  r   r   Nc                    | j                   j                  }| j                   j                  }|j                          t	        t        |j                  d                  }t        d|      D ]^  }|j                  d|z  d|z        }t        |      }t        |j                               }||k  sE|j                  d||fz  d|z         ` |j                  d      dk(  rxt        | j                   d      sb|j                  d	      d
kD  rN|j                  d      dk(  r:|j                  d       |j                  d	      d
kD  r|j                  d      dk(  r:|j                          y )Nr#   rC   z%i.0z%i.endz%i.%izend-2crP   interpzend-1cr"   zend-3c)r   r%   undor/   r   floatr*   rU   r'   rH   rX   r0   hasattrr1   )	r   r3   r%   r   end_linecurtxtr   cuts	            r   	do_rstripzRstrip.do_rstrip  s2   ||  ||  uTZZ./0H% 	BC((6C<C8Cc(Ccjjl#C SyGsCj0(S.A	B HHX$&DLL(3::h'%/xx)T1H% ::h'%/xx)T1 	r   r	   )r;   r<   r=   r   r   r?   r   r   r   r     s    r   r   __main__)mainzidlelib.idle_test.test_formatrQ   F)	verbosityexit)rT   tkinter.messageboxr   tkinter.simpledialogr   idlelib.configr   r   r   r)   r,   r+   rG   rS   r(   compiler{   r}   r   r   r   r;   unittestr   r?   r   r   <module>r      s    
 ' + #@ @F    ">J"HM,0
0	 "**Y'8M M`! !H @ z	(AEB r   