
    f-                     $    d dl mZ ddZd Zd Zy)   )	striptagsNc                 X    d fd}| j                   j                  |       y)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                 $    dt        |dz         z   S )Ntoc_r   )str)tokenindexs     F/var/www/cvtools/html/venv/lib/python3.12/site-packages/mistune/toc.py
heading_idz add_toc_hook.<locals>.heading_id   s    C	N**    c                 *   g }|j                   D ]3  }|d   dk(  s|d   d   }	|cxk  rk  s n #|j                  |       5 g }t        |      D ]/  \  }} ||      |d   d<   |j                  t        | |             1 ||j                  d<   y )Ntypeheadingattrslevelid	toc_items)tokensappend	enumeratenormalize_toc_itemenv)
mdstateheadingstokr   r   ir   	max_level	min_levels
          r
   toc_hookzadd_toc_hook.<locals>.toc_hook   s    << 	)C6{i'GW-22OOC(		) 	) 	:FAs!+C!3CL/C89	:
 "+		+r   )before_render_hooksr   )r   r   r   r   r    s    ``` r
   add_toc_hookr"      s+    & 	++" !!(+r   c                     |d   }| j                  |i       }| j                  |i       }t        |      }|d   }|d   |d   |fS )Ntextr   r   r   )inlinerendererr   )r   r   r$   r   htmlr   s         r
   r   r   /   sR    =DYYtR F;;vr"DT?D'NE>5;,,r   c                 z   | syd}g }| D ]  \  }}}dj                  ||      }|s|d|z   z  }|j                  |       5||d   k(  r	|d|z   z  }F||d   kD  r|d|z   z  }|j                  |       h|j                          |rg|j                         }||k(  r|d|z   z  }|j                  |       ||kD  r+|d|z   z  }|j                  |       |j                  |       |d	z  }|rg|j                  |       |d|z   z  } t        |      d
kD  r$|d	z  }|j                          t        |      d
kD  r$|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<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)tocslevelsr   kr$   item
last_levels           r
   render_toc_ulr4   8   ss   " AF *q$%,,Q5$AMM% fRj %%AVBZ$&&AMM% JJL#ZZ\
J&4t;;AMM%(Z'--AMM*-MM%())A  e$]T))7*: f+/	

 f+/ r   )r      N)utilr   r"   r   r4    r   r
   <module>r8      s    (,V-7 r   