a 9êdg¡=ã@sÔddlZddlmZddlmZddlmZGdd„dƒZe ¡dd„Z d d „Z d d „Z d d„Z dd„Z dd„Ze d¡Zdd„ZGdd„dƒZGdd„dƒZGdd„dƒZedkrÐddlmZeddd d!dS)"éN)Úaskyesno)Ú askinteger)ÚidleConfc@s2eZdZdd„Zedd„ƒZdd„Zd dd „ZdS) ÚFormatParagraphcCs ||_dS©N©Úeditwin©Úselfr©r ú*/usr/local/lib/python3.9/idlelib/format.pyÚ__init__szFormatParagraph.__init__cCstjdddddd|_dS)NÚ extensionsrz max-widthÚintéH)ÚtypeÚdefault)rZ GetOptionÚ max_width)Úclsr r r Úreload"sÿzFormatParagraph.reloadcCs d|_dSrr©r r r r Úclose'szFormatParagraph.closeNc Csà|dur|jn|}|jj}|j ¡\}}|rF|rF| ||¡}t|ƒ}nt|| d¡ƒ\}}}}|rpt|||ƒ}n t ||ƒ}|  ddd¡||krÆ|  d|¡|  ¡|  ||¡| ||¡| ¡n |  d|¡| d¡dS)NÚinsertÚselú1.0ÚendÚbreak)rrÚ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_stopZsee) r ÚeventÚlimitrÚfirstÚlastÚdataÚcomment_headerÚnewdatar r r Úformat_paragraph_event*s*   ÿ        z&FormatParagraph.format_paragraph_event)N)Ú__name__Ú __module__Ú __qualname__r Ú classmethodrrr1r r r r rs  rc Cs:tt| d¡ƒ\}}| d|d|¡}| d|dd¡r`t|ƒr`|d}| d|d|¡}q(|}t|ƒ}t|ƒ}t|ƒ|kr®t||d…ƒs®|d}| d|d|¡}qtd|}|d}| d|d|¡}|dkrt|ƒ|krt||d…ƒs|d}| d|d|¡}qÒd|d} | ||| | |¡fS)NÚ.z%d.0z%d.endú    ÿ    r$cs„tˆƒ‰d ‡fdd„| d¡Dƒ¡}t|tˆƒdƒ}t||ƒ}| d¡}d}|dshd}|dd…}d ‡fdd„|Dƒ¡|S)Nr@c3s|]}|ˆd…VqdSrr ©Ú.0r?)Úlcr r Ú ¡óz#reformat_comment..éÚéÿÿÿÿc3s|]}ˆ|VqdSrr rR)r/r r rU°rV)r<rJr:Úmaxr$)r.r+r/Z format_widthr0Z block_suffixr )r/rTr r#œs   r#cCst d|¡duS)Nz^\s*$)rDÚmatch©r?r r r r;²sr;cCst d|¡ ¡S)Nz ^([ \t]*)©rDr[Úgroupr\r r r rC·srCcCs"t d|¡}|durdS| d¡S)Nz ^([ \t]*#*)rXr8r])r?Úmr r r r »s  r z[ \t]*cCs$t |¡}| ¡t| ¡ |¡ƒfSr)Ú_line_indent_rer[rr<r^rF)r?Útabwidthr_r r r Úget_line_indentÊs rbc@sheZdZdd„Zdd„Zdd„Zddd „Zdd d „Zdd d „Zddd„Z ddd„Z ddd„Z dd„Z dS)Ú FormatRegioncCs ||_dSrrr r r r r ×szFormatRegion.__init__cCsr|jj}|j ¡\}}|r<|r<| |d¡}| |d¡}n| d¡}| d¡}| ||¡}| d¡}||||fS)Nz linestartz-1c lineend +1czinsert linestartzinsert lineend +1cr@)rrrr"rr:)r rr,r-ÚheadÚtailÚcharsrKr r r Ú get_regionÚs     zFormatRegion.get_regioncCsz|jj}d |¡}||kr&| ¡dS| ddd¡| d|¡| ¡| ||¡| ||¡|  ¡|  d|d¡dS)Nr@rrrr) rrrJZbellr%r&r'r(rr)Ztag_add)r rdrerfrKrÚnewcharsr r r Ú set_regionðs     zFormatRegion.set_regionNc Cs|| ¡\}}}}tt|ƒƒD]J}||}|rt||jjƒ\}} | |jj} |j | ¡||d…||<q| ||||¡dS©Nr) rgrEr<rbrraÚ indentwidthÚ _make_blanksri© r r*rdrerfrKÚposr?ÚrawÚ effectiver r r Úindent_region_events z FormatRegion.indent_region_eventc Cs‚| ¡\}}}}tt|ƒƒD]P}||}|rt||jjƒ\}} t| |jjdƒ} |j | ¡||d…||<q|  ||||¡dS)Nrr) rgrEr<rbrrarZrkrlrirmr r r Údedent_region_eventsz FormatRegion.dedent_region_eventcCsN| ¡\}}}}tt|ƒdƒD]}||}d|||<q | ||||¡dS)Nr8ú##r©rgrEr<ri©r r*rdrerfrKrnr?r r r Úcomment_region_event s z!FormatRegion.comment_region_eventcCs†| ¡\}}}}tt|ƒƒD]T}||}|s.q|dd…dkrL|dd…}n|dd…dkrh|dd…}|||<q| ||||¡dS)NrArsr8ú#rrtrur r r Úuncomment_region_event,s  z#FormatRegion.uncomment_region_eventc Cs’| ¡\}}}}| ¡}|dur$dStt|ƒƒD]L}||}|r0t||ƒ\} } t| |ƒ\} } d| d| || d…||<q0| ||||¡dS)Nú rBr)rgÚ _asktabwidthrEr<rbÚdivmodri) r r*rdrerfrKrarnr?rorpZntabsZnspacesr r r Útabify_region_event?s"z FormatRegion.tabify_region_eventcCs\| ¡\}}}}| ¡}|dur$dStt|ƒƒD]}|| |¡||<q0| ||||¡dSrj)rgrzrEr<rFri)r r*rdrerfrKrarnr r r Úuntabify_region_eventNsz"FormatRegion.untabify_region_eventcCstdd|jj|jjdddS)Nz Tab widthzColumns per tab? (2-16)rAé©ÚparentZ initialvalueZminvalueÚmaxvalue)rrrrkrr r r rzYsúzFormatRegion._asktabwidth)N)N)N)N)N)N) r2r3r4r rgrirqrrrvrxr|r}rzr r r r rcÔs   rcc@s$eZdZdd„Zdd„Zdd„ZdS)ÚIndentscCs ||_dSrrr r r r r gszIndents.__init__cCsJ|j}|j}tddd|dd|dd|jdrF| |_d |_d S) Nz Toggle tabsz Turn tabs )ZonZoffz? Indent width )zwill bez remains atz 8.z! Note: a tab is always 8 columns)r€ér)rÚusetabsrrrk)r r*rr„r r r Útoggle_tabs_eventjs$ ÿþþýúzIndents.toggle_tabs_eventcCs<|j}tdd|j|jddd}|r8||jkr8|js8||_dS)Nz Indent widthz6New indent width (2-16) (Always use 8 when using tabs)rAr~rr)rrrrkr„)r r*rrNr r r Úchange_indentwidth_eventzsúz Indents.change_indentwidth_eventN)r2r3r4r r…r†r r r r r‚dsr‚c@seZdZdd„Zddd„ZdS)ÚRstripcCs ||_dSrrr r r r r ‰szRstrip.__init__Nc CsÐ|jj}|jj}| ¡tt| d¡ƒƒ}td|ƒD]L}| d|d|¡}t |ƒ}t |  ¡ƒ}||kr4|  d||fd|¡q4| d¡dkrÄt |jdƒsÄ| d ¡d krÄ| d ¡dkrÄ|  d ¡qœ|  ¡dS) Nrr8z%i.0z%i.endz%i.%izend-2cr@Zinterpzend-1crzend-3c)rrÚundor'rÚfloatr"rErr<rHr(Úhasattrr)) r r*rrˆZend_lineZcurZtxtroZcutr r r Ú do_rstripŒs$  ÿ ÿ zRstrip.do_rstrip)N)r2r3r4r r‹r r r r r‡ˆsr‡Ú__main__)Úmainzidlelib.idle_test.test_formatrAF)Ú verbosityÚexit)rDZtkinter.messageboxrZtkinter.simpledialogrZidlelib.configrrrr!r$r#r;rCr Úcompiler`rbrcr‚r‡r2Zunittestrr r r r Ús(   C%$  $