
    Xh6                         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y)    )TYPE_CHECKINGAnyCallableDictIterableListOptionalTuple   )
BlockState)	striptags)MarkdownNmdr   	min_level	max_level
heading_idreturnc                     #dt         t        t        f   dt        dt        fd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
    Ntokenindexr   c                 $    dt        |dz         z   S )Ntoc_r   )str)r   r   s     ?/var/www/html/myenv/lib/python3.12/site-packages/mistune/toc.pyr   z 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)
r   stateheadingstokr    r"   ir   r   r   s
          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   )r   r   r(   r   r   N)r   r   r   intbefore_render_hooksr$   )r   r   r   r   r,   s    ``` r   add_toc_hookr/   
   sH    0 	+d38n 	+S 	+S 	++" !!(+r   r   c                     |d   }| j                  |i       }| j                  J | j                  |t                     }t        |      }|d   }|d   |d   |fS )Ntextr   r    r!   )inlinerendererr   r   )r   r   r1   r#   htmlr   s         r   r&   r&   ;   sd    =DYYtR F;;""";;vz|,DT?D'NE>5;,,r   tocc                    | 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$|sy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)r5   slevelsr    kr1   item
last_levels           r   render_toc_ulrA   E   s}   " 
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+/ a<***r   )r      N)typingr   r   r   r   r   r   r	   r
   corer   utilr   markdownr   r-   r   r/   r&   rA    r   r   <module>rH      s    V V V  "
 AE	.,.,., ., 4S>3"7"<=>	.,
 
.,b-: -d38n -sCQT}AU -9+xc3m 45 9+# 9+r   