o
    tf-                     @   s*   d dl mZ d
ddZdd Zdd	 ZdS )   )	striptags   Nc                    s0    du rdd   fd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
    Nc                 S   s   dt |d  S )NZtoc_r   )str)tokenindex r   T/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/mistune/toc.py
heading_id   s   z add_toc_hook.<locals>.heading_idc                    s   g }|j D ]}|d dkr$|d d }|  krkr$n q|| qg }t|D ]\}} |||d d< |t| | q+||jd< d S )Ntypeheadingattrslevelid	toc_items)tokensappend	enumeratenormalize_toc_itemenv)mdstateZheadingstokr   r   ir	   	max_level	min_levelr   r   toc_hook   s   

zadd_toc_hook.<locals>.toc_hook)Zbefore_render_hooksr   )r   r   r   r	   r   r   r   r   add_toc_hook   s   r   c                 C   sB   |d }|  |i }| |i }t|}|d }|d |d |fS )Ntextr   r   r   )inlinerendererr   )r   r   r   r   htmlr   r   r   r   r   /   s   r   c                 C   s6  | sdS d}g }| D ]x\}}}d ||}|s#|d| 7 }|| q
||d kr0|d| 7 }q
||d krB|d| 7 }|| q
|  |rw| }||kr\|d| 7 }|| n&||krq|d| 7 }|| || n|d	7 }|sH|| |d| 7 }q
t|d
kr|d	7 }|  t|d
ks|d	 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<ul>
z<a href="#{}">{}</a>z<li>z
</li>
<li>z

<ul>
<li>z</li>
</ul>
</li>
<li>z</li>
</ul>
r   )formatr   poplen)ZtocsZlevelsr   kr   itemZ
last_levelr   r   r   render_toc_ul8   sH   



r*   )r   r   N)utilr   r   r   r*   r   r   r   r   <module>   s    
+	