
    ;eO.                     R   	 d dl mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
mZmZ d dlmZmZmZmZ d dl	mZ d dlmZ  G d d	e          Z G d
 de          Z G d de          Z G d de
          Zd Zd Zedk    r'd dlmZ  eddd           d dlm Z   e e           dS dS )    )
HTMLParser)abspathdirnameisfilejoin)python_version)ToplevelTextMenu)Frame
Menubutton	ScrollbarStylefont)idleConfc                   0    e Zd Z	 d ZddZd Zd Zd ZdS )	
HelpParserc                     t          j        | d           || _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        g | _        d| _        d | _        d S )NT)convert_charrefs Fr   )r   __init__texttagschartagsshowhdrlinklevelprehprefix	nested_dl
simplelisttocheaderprevtag)selfr   s     #/usr/lib/python3.11/idlelib/help.pyr   zHelpParser.__init__3   sw    D48888			
       c                 z    	 | xj         |z  c_         | j         dk    rdndt          | j                   z   | _        d S )Nr   r   l)r   strr   )r&   amts     r'   indentzHelpParser.indentC   s;    -

c

*//BBs3tz??/B			r(   c                 l   	 d}|D ]\  }}|dk    r|}d}|dk    r|dgk    r	d| _         n|dk    r|dk    r	d| _         n|d	k    rK| j        rD| j        d
         s7| j                            dd          }|r|                                sdnd}nj|dk    r|dk    r	d| _        nU|dk    r|dk    r	d| _        n@|dk    r	d| _        n1|dv r?|                    d          dk    r
d}d| _        nd| _        |                                  n|dk    r| j	        d
k    rd| _
        n|dk    r| j        rdnd}n|dk    r| j
        sdnd}d| _
        n|dk    r|                                  d}n|dk    r1d| _        | j         r| j                            dd           d| _        nV|dk    r|dk    rd| _        nB|d k    r|| _        n4|d!v r0| j         r"d| _        | j                            dd           || _        | j         r(| j                            d|| j        | j        f           d|f| _        d S )"Nr   classsection)ididleTdivclearerFpr   zend-1c linestartzend-1cz


spanr   versionmodifiedem)ulolsimpledlliz
* z

* dtddendpreblocka
headerlinkh1)h2h3)r   r%   r   getisspacer   findr"   r.   r   r!   r   insertr   r   r$   )r&   tagattrsclass_rE   vslastlines           r'   handle_starttagzHelpParser.handle_starttagH   s   ( 	 	DAqG||).)9 9 9DIIE\\f	11DIICZZDLZaZ y}}%7BBH"G8+;+;+=+=G4AAF]]v!DMMF]]v)::: DMMD[[ DMML  {{8$$**"&"'KKMMMMD[[zA~~!%D[[/7xAAD[["n6$A"DNND[[KKMMMAAE\\DHy 0	  ///"DIICZZFl22DLLD[[DIIL  y 0 	  ///DI9 	CIUA	4='ABBBc{r(   c                 l   	 |dv r]| j         rN|dk    rdn	|dk    rdnd}| j                            || j        z   | j                            d          f           d| _        nH|dv rd| _        n<|d	k    rd
| _        n.|dk    rd
| _	        d| _        n|dv r| 
                    d           d
|f| _        d S )NrG   rH   rI   rI   z        rH   z    r   rM   )r8   r:   rE   Fr   )r;   rB   r<   r>   )r   r#   appendr$   r   indexr   r   r   r   r.   r%   )r&   rN   r.   s      r'   handle_endtagzHelpParser.handle_endtag   s    &$$$y Q(+t**$'4KK&&  !3TY__X5N5N OPPPDIIN""DMMCZZ DLLE\\DHDII&&&KKOOOs|r(   c                 8   	 | j         r| j        s| j        r|n|                    dd          }| j        dk    r;	 |d|                    d                   | _        n# t          $ r
 d| _        Y nw xY w| j        dv rn| j        dk    rA|dt          | j                           | j        k    r|t          | j                  d          }| xj	        |
                                z  c_	        | j                            d|| j        | j        f           d S d S d S )Nr7    rG   r   r   rV   rC   )r   r   r   replacer   rX   r    
ValueErrorlenr$   stripr   rM   r   )r&   datads      r'   handle_datazHelpParser.handle_data   s;   ,9 	CT\ 	C=dll4&=&=AyD  &#$Qqwws||^#4DLL! & & &#%DLLL&y...LB&&aDL)))*dl::#dl++,,-Aqwwyy(IUA	4='ABBBBB	C 	C 	C 	Cs   "A   A43A4N)r)   )__name__
__module____qualname__r   r.   rT   rY   rb    r(   r'   r   r   *   ss           C C C C
8# 8# 8#t$ $ $*C C C C Cr(   r   c                       e Zd Z	 d Zd ZdS )HelpTextc           
         	 t          j        dddd          }t          j        dddd          }d|z  dz  }t          j        | |d	d
dd
||           |                     g d          }|                     g d          }|df| d<   |                     d|ddf           |                     d|ddf           |                     d|ddf           |                     d|ddf           |                     d|dfd           |                     d|dfd d!d"d#$           |                     d%d d &           |                     d'd(d(&           |                     d)d*d*&           |                     d+d,d,&           t          |           | _        t          |d-.          5 }|	                                }d d d            n# 1 swxY w Y   | j        
                    |           d/| d0<   d S )1NmainEditorWindowwidthint)typeheight      wordr      )wraphighlightthicknesspadxborderwidthrl   ro   )TkDefaultFontarial	helvetica)TkFixedFontmonacocourier   r   r:   italicr   rG      boldrH      rI      r   z#f6f6ff)r   
backgroundrD   
      r)   solidz#eeffcc)r   lmargin1rw   reliefr   l1)r   lmargin2l22   l3K   l4d   zutf-8)encodingdisabledstate)r   	GetOptionr
   r   findfonttag_configurer   parseropenreadfeed)	r&   parentfilenameuwideuhigh
normalfont	fixedfontfcontentss	            r'   r   zHelpText.__init__   s   1"6>7OOO"6>8%PPPE	QdFA!5	H 	H 	H 	H ]]#J#J#JKK
MM"F"F"FGG	"B'V4z2x&@AAA4z2v&>???4z2v&>???4z2v&>???5	29MMM:YObg) 	 	E 	E 	E4"r:::4"r:::4"r:::4#<<< &&(W--- 	 vvxxH	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 """"Ws   /GGGc                 L   	 |D ]}|                                 d t          j        |           D             v r3t          j        |d|           }|                                d         c S |                                 d t          j        |           D             v r|c S d S )Nc              3   >   K   | ]}|                                 V  d S Nlower.0xs     r'   	<genexpr>z$HelpText.findfont.<locals>.<genexpr>   s*      KKa		KKKKKKr(   )rootT)nameexistsr   familyc              3   >   K   | ]}|                                 V  d S r   r   r   s     r'   r   z$HelpText.findfont.<locals>.<genexpr>   sF       "G "G&' #$'')) "G "G "G "G "G "Gr(   )r   tkfontnamesFontactualfamilies)r&   r   r   r   s       r'   r   zHelpText.findfont   s    > 	 	Dzz||KK6<T3J3J3JKKKKK{TEEE{{}}X.... "G "G+1?+E+E+E"G "G "G G GG		 	r(   N)rc   rd   re   r   r   rf   r(   r'   rh   rh      s5        # # #:    r(   rh   c                       e Zd Z	 d Zd ZdS )	HelpFramec                 F   t          j        | |           t          | |          x| _        }t	          |          | _        d| d<   | j                            d|d                    |                     |          x| _        }t          | |j
                  x| _        }|j        |d<   |                     dd	           |                     dd	           |                    ddd
           |                    ddd           |                    ddd           d S )Nzhelpframe.TFramestyler   )r   )commandyscrollcommandr   r)   weightnw)rowcolumnstickynsew   ns)r   r   rh   r   r   r   	configuretoc_menur#   r   yviewscrollsetrowconfigurecolumnconfiguregrid)r&   r   r   r   r#   r   s         r'   r   zHelpFrame.__init__   s!   tV$$$#D(333	D6]]
*W
/D<NOOOt,,,3(tzBBBBf!'!A&&&Qq)))Qq...		a&	111!D11111r(   c                     	 t          | d          }t          |d          }j        j        D ]!\  }}|                    ||ffd	           "||d<   |S )NTOC)r   F)tearoffc                 .                         |           S r   )r   )dexr   s    r'   <lambda>z$HelpFrame.toc_menu.<locals>.<lambda>   s    tzz# r(   )labelr   menu)r   r   r   r#   add_command)r&   r   r#   droplblr   s    `    r'   r   zHelpFrame.toc_menu   s|    5E***C''' 	P 	PHC330N0N0N0N0NOOOOF
r(   N)rc   rd   re   r   r   rf   r(   r'   r   r      s5        ,2 2 2     r(   r   c                       e Zd Z	 d ZdS )
HelpWindowc                 8   t          j        | |           |                     |           |                     d| j                   t          | |                              ddd           |                     dd           |                     dd           d S )NWM_DELETE_WINDOWr   r   )r   r   r   r)   r   )	r	   r   wm_titleprotocoldestroyr   r   grid_columnconfiguregrid_rowconfigure)r&   r   r   titles       r'   r   zHelpWindow.__init__   s    $'''e($,777$!!&&aQv&FFF!!!A!...q+++++r(   N)rc   rd   re   r   rf   r(   r'   r   r      s&        ', , , , ,r(   r   c                  (   	 t          t          t          t          t          t                                                  ddddd          } t          t          t          t                              d          }t	          | d          5 }t	          |d          5 }|D ],}|                    |                                d	z              -	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |  d
|            d S )NDocbuildhtmllibraryz	idle.html	help.htmlrbwb   
z copied to )r   r   r   __file__r   writerstripprint)srcdstinnoutlines        r'   
copy_stripr      s   , wwwwx'8'899::;;7FI{< <C
wwx(());
7
7C	c4 -C	c4- 	- 	-DIIdkkmme+,,,,	-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
S
"
"S
"
"#####s6   C30CC3C 	 C3#C 	$C33C7:C7c                     	 t          t          t          t                              d          }t	          |          sd S t          | |dt                      z             d S )Nr   zIDLE Help (%s))r   r   r   r   r   r   r   )r   r   s     r'   show_idlehelpr     s]    =GGH--..<<H( vx!1N4D4D!DEEEEEr(   __main__)rj   zidlelib.idle_test.test_helpr   F)	verbosityexit)runN)!html.parserr   os.pathr   r   r   r   platformr   tkinterr	   r
   r   tkinter.ttkr   r   r   r   r   r   idlelib.configr   r   rh   r   r   r   r   rc   unittestrj   idlelib.idle_test.htestr   rf   r(   r'   <module>r     s  4 # " " " " " 2 2 2 2 2 2 2 2 2 2 2 2 # # # # # # ( ( ( ( ( ( ( ( ( ( ; ; ; ; ; ; ; ; ; ; ; ; " " " " " " # # # # # #{C {C {C {C {C {C {C {C|' ' ' ' 't ' ' 'T       8, , , , , , , ,$ $ $@F F F zD	&!%@@@@++++++C r(   