
    MhL                         d Z ddlmZmZmZmZ ddlmZmZ ddl	m
Z
mZ erddlmZ ddlmZmZ dd	lmZ  G d
 de          Zddddedededef
dZdeeef         dededefdZdS )aP  
TOC directive
~~~~~~~~~~~~~

The TOC directive syntax looks like::

    .. toc:: Title
       :min-level: 1
       :max-level: 3

"Title", "min-level", and "max-level" option can be empty. "min-level"
and "max-level" are integers >= 1 and <= 6, which define the allowed
heading levels writers want to include in the table of contents.
    )TYPE_CHECKINGAnyDictMatch   )normalize_toc_itemrender_toc_ul   )BaseDirectiveDirectivePlugin)BlockParser)BaseRenderer
BlockState)Markdownc            
           e Zd ZddededdfdZdeeef         d	edefd
Zddde	e         dddeeef         fdZ
ddZdeddddfdZdS )TableOfContentsr
      	min_level	max_levelreturnNc                 "    || _         || _        d S )N)r   r   )selfr   r   s      V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mistune/directives/toc.py__init__zTableOfContents.__init__   s    ""    tokenindexc                 ,    dt          |dz             z   S )Ntoc_r
   )str)r   r   r   s      r   generate_heading_idz#TableOfContents.generate_heading_id    s    EAI&&r   blockr   mstater   c                    |                      |          }|                     |          }|rt          |          }d|v }t          |d| j                  }t          |d| j                  }	|| j        k     rt          d| j                   |	| j        k    rt          d| j                   ||	k    rt          d          nd}| j        }| j        }	||	|d}
d	|pd
|
dS )Ncollapsez	min-levelz	max-levelz"min-level" option MUST be >= z"max-level" option MUST be <= z7"min-level" option MUST be less than "max-level" optionF)r   r   r&   toc )typetextattrs)parse_titleparse_optionsdict_normalize_levelr   r   
ValueError)r   r"   r#   r$   titleoptions	d_optionsr&   r   r   r+   s              r   parsezTableOfContents.parse#   s     ##$$Q'' 	'WI!Y.H(KPPI(KPPI4>)) !R$.!R!RSSS4>)) !R$.!R!RSSS9$$ !Z[[[ % HII #" 
 

 u{UCCCr   mdr   c                   
 g }g }|j         D ]E}|d         dk    r|                    |           $|d         dk    r|                    |           F|rg }t          |          D ]G\  }}|                     ||          |d         d<   |                    t	          ||                     H|D ]:}|d         d         |d         d         

fd|D             }	|	|d         d<   9d S d S )	Nr)   r'   headingr+   idr   r   c                 @    g | ]}|d          cxk    rk    n n|S )r    ).0item_max_mins     r   
<listcomp>z,TableOfContents.toc_hook.<locals>.<listcomp>Q   s>    MMMTT!W5L5L5L5L5L5L5L5L5Lt5L5L5Lr   )tokensappend	enumerater!   r   )r   r5   r$   sectionsheadingstok	toc_itemsisecr'   r=   r>   s             @@r   toc_hookzTableOfContents.toc_hook=   s9   < 	% 	%C6{e##$$$$V	))$$$ 	*I#H-- > >3%)%=%=c1%E%EGT"  !3B!<!<==== * *7|K07|K0MMMMM	MMM&)GU##	* 	** *r   	directivec                     |j         rl|j         j        dk    r^|                    d| j                   |j                            | j                   |j                             dt                     d S d S d S )Nhtmlr'   )rendererNAMEregisterr4   before_render_hooksrA   rI   render_html_toc)r   rJ   r5   s      r   __call__zTableOfContents.__call__T   sz    ; 	92;+v55udj111"))$-888K  88888		9 	955r   )r
   r   )r5   r   r$   r   r   N)__name__
__module____qualname__intr   r   r    r   r!   r   r4   rI   r   rR   r:   r   r   r   r      s        # ## #c #$ # # # #'c3h ' ' ' ' ' 'D= DU3Z D DQUVY[^V^Q_ D D D D4* * * *.9- 9Z 9D 9 9 9 9 9 9r   r   FrM   r   r1   r&   r+   r   c                 l    |sd}t          |d                   }d}|s|dz  }|d|z   dz   z  }||z   dz   S )NzTable of Contentsr'   z<details class="toc"z openz>
<summary>z</summary>
z</details>
)r	   )rM   r1   r&   r+   contentrL   s         r   rQ   rQ   \   sY     $#E%L))G!D NU"^33D'>N**r   r2   namedefaultc                     |                      |          }|s|S 	 t          |          S # t          t          f$ r t          d| d          w xY w)N"z" option MUST be integer)getrV   r0   	TypeError)r2   rY   rZ   levels       r   r/   r/   h   sk    KKE =5zz	" = = =;T;;;<<<=s	   * %AN)F)__doc__typingr   r   r   r   r'   r   r	   _baser   r   block_parserr   corer   r   markdownr   r   r    boolrQ   r/   r:   r   r   <module>rg      sT    3 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 $******////////######>9 >9 >9 >9 >9o >9 >9 >9B	+ 	+n 	+S 	+D 	+[^ 	+cf 	+ 	+ 	+ 	+=d38n =C =# =# = = = = = =r   