
    h6                         S SK JrJrJrJrJrJrJrJr  SSK	J
r
  SSKJr  \(       a  SSKJr     SSSS	\S
\S\\\\\4   \/\4      SS4
S jjrSSS\\\4   S\\\\4   4S jrS\\\\\4      S\4S jrg)    )TYPE_CHECKINGAnyCallableDictIterableListOptionalTuple   )
BlockState)	striptags)MarkdownNmdr   	min_level	max_level
heading_idreturnc                    ^^^ Tc$  S[         [        [        4   S[        S[        4S jmSUUU4S jjnU R                  R                  U5        g)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                 $    S[        US-   5      -   $ )Ntoc_r   )str)r   r   s     ^C:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\mistune/toc.pyr    add_toc_hook.<locals>.heading_id$   s    C	N**    c                 6  > / nUR                    H:  nUS   S:X  d  M  US   S   nT	Us=::  a  T::  d  M%  O  M)  UR                  U5        M<     / n[        U5       H-  u  pcT" X65      US   S'   UR                  [        X5      5        M/     XQR                  S'   g )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_hookadd_toc_hook.<locals>.toc_hook'   s    <<C6{i'GW-222OOC(	   	)FA!+C!3CL/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_hookr1   
   sM    0 	+d38n 	+S 	+S 	++ +" !!(+r   r   c                     US   nU R                  U0 5      nU R                  c   eU R                  U[        5       5      n[        U5      nUS   nUS   US   U4$ )Ntextr    r!   r"   )inlinerendererr   r   )r   r   r3   r$   htmlr    s         r   r'   r'   ;   sd    =DYYtR F;;""";;vz|,DT?D'NE>5;,,r   tocc                    U (       d  gSn/ nU  GH  u  p4nSR                  XE5      nU(       d  USU-   -  nUR                  U5        M:  X2S   :X  a
  USU-   -  nML  X2S   :  a  USU-   -  nUR                  U5        Mo  UR                  5         U(       ao  UR                  5       nX7:X  a  USU-   -  nUR                  U5        M  X7:  a,  USU-   -  nUR                  U5        UR                  U5        M  US-  nU(       a  Mo  UR                  U5        USU-   -  nGM     [        U5      S	:  a&  US-  nUR                  5         [        U5      S	:  a  M&  U(       d  gS
U-   S-   $ )a8  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)r7   slevelsr!   kr3   item
last_levels           r   render_toc_ulrC   E   sn   " 
AF$%,,Q5$AMM% Rj %%ABZ$&&AMM% JJL#ZZ\
&4t;;AMM%('--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   r1   r'   rC    r   r   <module>rJ      s    V V V  "
 AE	.,.,., ., 4S>3"7"<=>	.,
 
.,b-: -d38n -sCQT}AU -9+xc3m 45 9+# 9+r   