
    Mh6                        d dl mZmZmZmZmZmZmZmZ ddl	m
Z
 ddlmZ erddlmZ 	 	 	 ddd	d
ededeeeeef         egef                  ddf
dZdd	deeef         deeeef         fdZdeeeeef                  defdZdS )    )TYPE_CHECKINGAnyCallableDictIterableListOptionalTuple   )
BlockState)	striptags)Markdown   Nmdr   	min_level	max_level
heading_idreturnc                     +dt           t          t          f         dt          dt          fddfd
}| j                            |           dS )a%  Add a hook to save toc items into ``state.env``. This is
    usually helpful for doc generator::

        import mistune
        from mistune.toc import add_toc_hook, render_toc_ul

        md = mistune.create_markdown(...)
        add_toc_hook(md)

        html, state = md.parse(text)
        toc_items = state.env['toc_items']
        toc_html = render_toc_ul(toc_items)

    :param md: Markdown instance
    :param min_level: min heading level
    :param max_level: max heading level
    :param heading_id: a function to generate heading_id
    Ntokenindexr   c                 ,    dt          |dz             z   S )Ntoc_r   )str)r   r   s     K/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mistune/toc.pyr   z add_toc_hook.<locals>.heading_id$   s    C	NN**    r   r   stater   c                 P   g }|j         D ]A}|d         dk    r3|d         d         }	|cxk    rk    rn ,|                    |           Bg }t          |          D ]=\  }} ||          |d         d<   |                    t          | |                     >||j        d<   d S )Ntypeheadingattrslevelid	toc_items)tokensappend	enumeratenormalize_toc_itemenv)
r   r   headingstokr"   r$   ir   r   r   s
          r   toc_hookzadd_toc_hook.<locals>.toc_hook'   s    < 	) 	)C6{i''GW-222222222OOC(((	)) 	: 	:FAs!+C!3!3CL/C889999 "+	+r   )r   r   r   r   r   N)r   r   r   intbefore_render_hooksr&   )r   r   r   r   r-   s    ``` r   add_toc_hookr0   
   s    0 	+d38n 	+S 	+S 	+ 	+ 	+ 	++ + + + + + + +" !!(+++++r   r   c                     |d         }|                      |i           }| j        J |                     |t                                }t          |          }|d         }|d         |d         |fS )Ntextr!   r"   r#   )inlinerendererr   r   )r   r   r2   r%   htmlr!   s         r   r(   r(   ;   sl    =DYYtR  F;""";;vz||,,DT??D'NE>5;,,r   tocc                    | 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    ,|sdS d
|z   dz   S )ah  Render a <ul> table of content HTML. The param "toc" should
    be formatted into this structure::

        [
          (level, id, text),
        ]

    For example::

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

<ul>
<li>z</li>
</ul>
</li>
<li>z</li>
</ul>
r   z<ul>
)formatr&   poplen)r6   slevelsr"   kr2   item
last_levels           r   render_toc_ulrB   E   s   "  r
AF * *q$%,,Q55 	*$AMM%    fRj  %%AAVBZ$&&AMM%    JJLLL *#ZZ\\
J&&4t;;AMM%(((Z''--AMM*---MM%((())A  * e$$$]T))
f++//	

 f++//  ra<***r   )r   r   N)typingr   r   r   r   r   r   r	   r
   corer   utilr   markdownr   r.   r   r0   r(   rB    r   r   <module>rH      sg   V V V V V V V V V V V V V V V V V V V V             #""""""
 AE	., .,.,., ., 4S>3"7"<=>	.,
 
., ., ., .,b-: -d38n -sCQT}AU - - - -9+xc3m 45 9+# 9+ 9+ 9+ 9+ 9+ 9+r   