
    Lc,                     n    d Z ddlmZ  G d de          Zd Zd Zd Zd Zd	 Zd
 Z	d Z
d Zd Zd ZdS )a  
    TOC directive
    ~~~~~~~~~~~~~

    The TOC directive syntax looks like::

        .. toc:: Title
           :depth: 3

    "Title" and "depth" option can be empty. "depth" is an integer less
    than 6, which defines the max heading level writers want to include
    in TOC.
   )	Directivec                   .    e Zd ZddZd Zd Zd Zd ZdS )	DirectiveToc   c                     || _         d S Ndepth)selfr
   s     6lib/python3.11/site-packages/mistune/directives/toc.py__init__zDirectiveToc.__init__   s    


    c                    |                     d          }d }|                     |          }|rQt          |                              d          }|r-	 t	          |          }n# t
          t          f$ r dddcY S w xY wdd ||fdS )Nvaluer
   block_errorzTOC depth MUST be integer)typerawtoc)r   r   params)groupparse_optionsdictgetint
ValueError	TypeError)r   blockmstatetitler
   optionss          r   parsezDirectiveToc.parse   s      $$Q'' 		MM%%g..E JJEE"I.    -:     duenEEEs   A$ $A=<A=c                 (    | j         |d<   g |d<   ||fS )N	toc_depthtoc_headingsr	   )r   mdsr   s       r   reset_toc_statezDirectiveToc.reset_toc_state'   s!    !Zk "n%xr   c                 l   t           |j        _        |j                            | j                   |j                            t                     |j        j	        dk    r"|j        
                    dt                     d S |j        j	        dk    r"|j        
                    dt                     d S d S )Nhtmltheadingast)record_toc_headingr   tokenize_headingbefore_parse_hooksappendr(   before_render_hooksmd_toc_hookrendererNAMEregisterrender_html_theadingrender_ast_theadingr   r&   s     r   register_pluginzDirectiveToc.register_plugin,   s    $6!
$$T%9:::
%%k222;v% 	BK  -ABBBBB[& 	BK  -@AAAAA	B 	Br   c                 $   |                      |d           |                     |           |j        j        dk    r"|j                            dt
                     d S |j        j        dk    r"|j                            dt                     d S d S )Nr   r*   r,   )register_directiver9   r3   r4   r5   render_html_tocrender_ast_tocr8   s     r   __call__zDirectiveToc.__call__6   s    E***R   ;v% 	8K  88888[& 	8K  77777	8 	8r   N)r   )__name__
__module____qualname__r   r"   r(   r9   r>    r   r   r   r      sj           F F F"  
B B B8 8 8 8 8r   r   c                     dt          t          |d                   dz             z   }|d                             || |f           d| ||fdS )Ntoc_r%   r   r+   )r   textr   )strlenr0   )rE   levelr   tids       r   r-   r-   @   sZ    
3s5011A566
6C	.  #tU!3444EEEr   c                    |                     d          }|s|S |                     dd          }t          t          | j        ||                    }|D ]3}|d         dk    r%|d         }|d         p|fd|D             }||d	<   4|S )
Nr%   r$   r   r   r   r   r   c                 ,    g | ]}|d          k    |S )   rB   ).0dr
   s     r   
<listcomp>zmd_toc_hook.<locals>.<listcomp>S   s&    :::1AaDEM:Q:::r   r   )r   list_cleanup_headings_textinline)	r&   tokensr   headingsdefault_depthtokr   itemsr
   s	           @r   r2   r2   G   s    yy((H  IIk1--M*29hFFGGH  v;% 	]F1I.E:::::::ECJMr   c                 $    dd | D             ||dS )Nr   c                 ,    g | ]}t          |          S rB   )rP   )rM   rN   s     r   rO   z"render_ast_toc.<locals>.<listcomp>[   s    )))a$q'')))r   )r   rW   r    r
   rB   )rW   r    r
   s      r   r=   r=   X   s+    ))5)))	  r   c                     d| ||dS )Nheading)r   childrenrH   idrB   )r\   rH   rI   s      r   r7   r7   a   s    xc  r   c                 J    d}|r|d|z   dz   z  }|t          |           z   dz   S )Nz<section class="toc">
z<h1>z</h1>
z</section>
)render_toc_ul)rW   r    r
   r*   s       r   r<   r<   h   s:    $D +**-&&&77r   c                 Z    dt          |          z   }d|z   dz   |z   dz   | z   dz   |z   dz   S )Nh<z id="z">z</z>
)rF   )rE   rH   rI   tags       r   r6   r6   p   s?    
E


C9w$t+d2T9C?%GGr   c                     |                      |i           \  }}| j                            ||           |                    d          }|sg S t	          t          | j        ||                    S )a&  Extract TOC headings into list structure of::

        [
          ('toc_1', 'Introduction', 1),
          ('toc_2', 'Install', 2),
          ('toc_3', 'Upgrade', 2),
          ('toc_4', 'License', 1),
        ]

    :param md: Markdown Instance with TOC plugin.
    :param s: text string.
    r%   )before_parser   r"   r   rP   rQ   rR   )r&   r'   r   rT   s       r   extract_toc_itemsrf   u   sl     q"%%HAuHNN1eyy((H 	&ry(EBBCCCr   c                    | sdS d}g }| D ]'\  }}}d                     ||          }|s|d|z   z  }|                    |           =||d         k    r	|d|z   z  }R||d         k    r|d|z   z  }|                    |           ||                                }|rx|                                }||k    r|d|z   z  }|                    |           n]||k    r3|d|z   z  }|                    |           |                    |           n$|d	z  }|x|                    |           |d|z   z  })t          |          d
k    r,|d	z  }|                                 t          |          d
k    ,|d	z   S )al  Render a <ul> table of content HTML. The param "toc" should
    be formatted into this structure::

        [
          (toc_id, text, level),
        ]

    For example::

        [
          ('toc-intro', 'Introduction', 1),
          ('toc-install', 'Install', 2),
          ('toc-upgrade', 'Upgrade', 2),
          ('toc-license', 'License', 1),
        ]
     z<ul>
z<a href="#{}">{}</a>z<li>z
</li>
<li>z

<ul>
<li>z</li>
</ul>
</li>
<li>z</li>
</ul>
r   )formatr0   poprG   )r   r'   levelskrE   rH   item
last_levels           r   r_   r_      s   "  rAF * *4%,,Q55 	*$AMM%    fRj  	*%%AAVBZ 	*$&&AMM%    J *#ZZ\\
J& 
*4t;;AMM%(((Z' *--AMM*---MM%((())A  * e$$$]T))
f++/ 	

 f++/  r   c              #      K   |D ]X}|d         }|                      ||| j                  }d                    d |D                       }|d         ||d         fV  Yd S )Nr   rh   c              3   4   K   | ]}t          |          V  d S r   )_inline_token_text)rM   rV   s     r   	<genexpr>z)_cleanup_headings_text.<locals>.<genexpr>   s+      AA3)#..AAAAAAr       rL   )_scanrulesjoin)rR   rW   r   rn   rE   rS   s         r   rQ   rQ      s}       % %AwdE6<88wwAA&AAAAA1gtT!W$$$$$	% %r   c                 t    | d         }|dk    rdS t          |           dk    r| d         S |dv r| d         S dS )Nrt   inline_htmlrh   rL   r   >   linkimage)rG   )tokentok_types     r   rr   rr      sT    QxH=  r
5zzQ Qx$$ Qx2r   N)__doc__baser   r   r-   r2   r=   r7   r<   r6   rf   r_   rQ   rr   rB   r   r   <module>r      s          +8 +8 +8 +8 +89 +8 +8 +8\F F F  "    8 8 8H H H
D D D*7  7  7 t% % %    r   