
    ;e=                     F   	 d dl Z d dlmZ d dlmZ d dlmZ  G d d          Ze                                 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           dS dS )    N)askyesno)
askinteger)idleConfc                   :    e Zd Z	 d Zed             Zd ZddZdS )FormatParagraphc                     || _         d S Neditwinselfr   s     %/usr/lib/python3.11/idlelib/format.py__init__zFormatParagraph.__init__           c                 B    t          j        ddddd          | _        d S )N
extensionsr   z	max-widthintH   )typedefault)r   	GetOption	max_width)clss    r   reloadzFormatParagraph.reload"   s.     *<9J+6UBP P Pr   c                     d | _         d S r	   r
   r   s    r   closezFormatParagraph.close'   s    r   Nc                    	 || j         n|}| j        j        }| j                                        \  }}|r(|r&|                    ||          }t          |          }n(t          ||                    d                    \  }}}}|rt          |||          }nt          ||          }|
                    ddd           ||k    rk|                    d|           |                                 |                    ||           |                    ||           |                                 n|                    d|           |                    d           dS )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*   si   
	 #(-U| l88::t 	?T 	?88E4((D/55NN #4H)=)=>> .E4 	6&tUNCCGG(u55Gue,,,d??MM(E***!!###KKt$$$KKw'''  """"MM(D)))wr   r	   )__name__
__module____qualname__r   classmethodr   r   r:    r   r   r   r      si            P P [P  $ $ $ $ $ $r   r   c                 4   	 t          t          |                    d                    \  }}|                     d|z  d|z            }|                     d|z  dd          rYt          |          rJ|dz   }|                     d|z  d|z            }|                     d|z  dd          rt          |          J|}t          |          }t          |          }t          |          |k    rbt          ||d                    sK|dz   }|                     d|z  d|z            }t          |          |k    rt          ||d                    Kd|z  }|dz
  }|                     d|z  d|z            }|dk    r{t          |          |k    rht          ||d                    sQ|dz
  }|                     d|z  d|z            }|dk    r*t          |          |k    rt          ||d                    Qd|dz   z  }	|	|||                     |	|          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   sa   
 c4::c??++KFC88FVOX%677D ,,vU
3
3 <T8J8J <!xxF):;; ,,vU
3
3 <T8J8J < L'--N^,, T
"
"N
2
2t$6$7$7899 3!xxF):;; T
"
"N
2
2t$6$7$7899 3 F?D AF88FVOX%677D
1** &&66t$6$7$7899 7!xxF):;;	 1** &&66t$6$7$7899 7 fQhE$(=(===r   c                 Z   	 |                      d          }d}t          |          }||k     r5t          ||                   r |dz   }||k     rt          ||                    ||k    r| S t          ||                   }|dz   |k     r1t          ||dz                      st          ||dz                      }n|}|d |         }|}||k     rt          ||                   st	          j         d||                   }	t          dt          |	          d          D ]}
|	|
         }|st          ||z                                             |k    r/||k    r)|                    |                                           |}||z   dz   }|
dz   t          |	          k     r|	|
dz            dk    r|dz   }|dz   }||k     rt          ||                   |                    |                                           |	                    ||d                     d
                    |          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**%Avvq""GsQww|E!A#J//wU1Q3Z((
)CG
a%%U1X..%58,,q#e**a(( 
	( 
	(A8D GdN..0011E99g%%

7>>++,,,!ns*GsSZZE!A#J#$5$5!C-aC a%%U1X..% JJw~~   JJuQRRy99S>>r   c                    	 t                    d                    fd|                     d          D                       } t          |t                    z
  d          }t	          | |          }|                    d          }d}|d         sd}|d d         }d                    fd|D                       |z   S )NrP   c              3   ,   K   | ]}|d          V  d S r	   r?   ).0rL   lcs     r   	<genexpr>z#reformat_comment.<locals>.<genexpr>   s+      <<4T"##Y<<<<<<r       c              3   "   K   | ]	}|z   V  
d S r	   r?   )rg   rL   r8   s     r   ri   z#reformat_comment.<locals>.<genexpr>   s(      ==T^D(======r   )rH   rZ   rE   maxr,   )r7   r4   r8   format_widthr9   block_suffixrh   s     `   @r   r+   r+      s    I 
^		B99<<<<4::d+;+;<<<<<D us>222B77L |44GmmD!!G
 L2; #2#,99====W=====LLr   c                 2    	 t          j        d|           d uS )Nz^\s*$)rT   matchrL   s    r   rG   rG      s    98Hd##4//r   c                 R    	 t          j        d|                                           S )Nz	^([ \t]*)rT   rr   grouprs   s    r   rS   rS      s#    98L$''--///r   c                 `    	 t          j        d|           }|dS |                    d          S )Nz^([ \t]*#*)rk   rC   ru   )rL   ms     r   r(   r(      s3     	&&Ay771::r   z[ \t]*c                     	 t                               |           }|                                t          |                                                    |                    fS r	   )_line_indent_rerr   r#   rH   rv   rV   )rL   tabwidthrx   s      r   get_line_indentr|      sM    
 	d##A5577C		,,X667777r   c                   X    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dS )FormatRegionc                     || _         d S r	   r
   r   s     r   r   zFormatRegion.__init__   r   r   c                 t   	 | j         j        }| j                                         \  }}|r3|r1|                    |dz             }|                    |dz             }n*|                    d          }|                    d          }|                    ||          }|                    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    	 | l88::t 	4T 	4::el233D::d%6677DD::011D::233Dt$$D!!T5%''r   c                    	 | j         j        }d                    |          }||k    r|                                 d S |                    ddd           |                    d|           |                                 |                    ||           |                    ||           |	                                 |
                    d|d           d S )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IIKKKFue,,,h%%%D$D(###UD(+++++r   Nc                 d   	 |                                  \  }}}}t          t          |                    D ]`}||         }|rTt          || j        j                  \  }}	|	| j        j        z   }	| j                            |	          ||d          z   ||<   a|                     ||||           dS 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#4 dE5U$$ 	O 	OC:D O!0t|7L!M!MY%(@@	!\66yAADJNc
dE5111wr   c                    	 |                                  \  }}}}t          t          |                    D ]n}||         }|rbt          || j        j                  \  }}	t          |	| j        j        z
  d          }	| j                            |	          ||d          z   ||<   o| 	                    ||||           dS )Nr   r$   )
r   rU   rH   r|   r   r{   rn   r   r   r   r   s
             r   dedent_region_eventz FormatRegion.dedent_region_event  s    .#'??#4#4 dE5U$$ 	O 	OC:D O!0t|7L!M!MY	DL,D DaHH	!\66yAADJNc
dE5111wr   c                     	 |                                  \  }}}}t          t          |          dz
            D ]}||         }d|z   ||<   |                     ||||           dS )NrC   ##r$   r   rU   rH   r   r   r3   r   r   r   r[   r   rL   s           r   comment_region_eventz!FormatRegion.comment_region_event   sw    	 $(??#4#4 dE5Ua(( 	% 	%C:DE#JJdE5111wr   c                 *   	 |                                  \  }}}}t          t          |                    D ]C}||         }|s|d d         dk    r|dd          }n|d d         dk    r
|dd          }|||<   D|                     ||||           dS )NrQ   r   rC   #r$   r   r   s           r   uncomment_region_eventz#FormatRegion.uncomment_region_event,  s    	
 $(??#4#4 dE5U$$ 	 	C:D BQBx4ABBxbqbSABBxE#JJdE5111wr   c                 j   	 |                                  \  }}}}|                                 }|d S t          t          |                    D ]K}||         }|r?t	          ||          \  }	}
t          |
|          \  }}d|z  d|z  z   ||	d          z   ||<   L|                     ||||           dS )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#4 dE5$$&&FU$$ 	G 	GC:D G!0x!@!@Y!'	8!<!<w!E\C'M9DJFc
dE5111wr   c                    	 |                                  \  }}}}|                                 }|d S t          t          |                    D ] }||                             |          ||<   !|                     ||||           dS r   )r   r   rU   rH   rV   r   )r   r3   r   r   r   r[   r{   r   s           r   untabify_region_eventz"FormatRegion.untabify_region_eventN  s    8#'??#4#4 dE5$$&&FU$$ 	9 	9Cs..x88E#JJdE5111wr   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   	r   r	   )r;   r<   r=   r   r   r   r   r   r   r   r   r   r   r?   r   r   r~   r~      s        $  ( ( (,, , ,0
 
 
 

 
 
 

 
 
 
   &   	 	 	 	    r   r~   c                   "    e Zd Z	 d Zd Zd ZdS )Indentsc                     || _         d S 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	|_        d
S )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  s    ,/]733 !'01389 33 \# # # 
	$ #*kGO #$Gwr   c                     | j         }t          dd|j        |j        dd          }|r||j        k    r|j        s||_        dS )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  s_    , K &2    	&3'---go-"%Gwr   N)r;   r<   r=   r   r   r   r?   r   r   r   r   d  sD                 r   r   c                       e Zd Zd ZddZdS )Rstripc                     || _         d S r	   r
   r   s     r   r   zRstrip.__init__  r   r   Nc                 8   | j         j        }| j         j        }|                                 t	          t          |                    d                              }t          d|          D ]r}|                    d|z  d|z            }t          |          }t          |
                                          }||k     r|                    d||fz  d|z             s|                    d          dk    rt          | j         d          sy|                    d	          d
k    r`|                    d          dk    rG|                    d           |                    d	          d
k    r|                    d          dk    G|                                 d S )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  s   | | uTZZ..//00H%% 	B 	BC((6C<C88Cc((Ccjjll##C SyyGsCj0(S.AAAHHX$&&DL(33 ' ::h''%//xx))T11H%%% ::h''%//xx))T11 	r   r	   )r;   r<   r=   r   r   r?   r   r   r   r     s7               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(   compilerz   r|   r~   r   r   r;   unittestr   r?   r   r   <module>r      s   
			 ' ' ' ' ' ' + + + + + + # # # # # #@ @ @ @ @ @ @ @F      "> "> ">J" " "HM M M,0 0 0
0 0 0	 	 	 "*Y''8 8 8M M M M M M M M`! ! ! ! ! ! ! !H       @ zD	(AEBBBBBB r   