
    hL                         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y)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y)TableOfContents	min_level	max_levelreturnNc                      || _         || _        y )N)r   r   )selfr   r   s      U/var/www/html/aiagenthome/venv/lib/python3.12/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                    | j                  |      }| j                  |      }|rt        |      }d|v }t        |d| j                        }t        |d| j
                        }	|| j                  k  rt        d| j                         |	| j
                  kD  rt        d| j
                         ||	kD  r%t        d      d}| j                  }| j
                  }	||	|d}
d	|xs 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PI(KPI4>>) #A$..AQ!RSS4>>) #A$..AQ!RSS9$ !Z[[HII #" 

 u{UCCr   mdr   c                    g }g }|j                   D ]6  }|d   dk(  r|j                  |       |d   dk(  s&|j                  |       8 |rg }t        |      D ]8  \  }}| j                  ||      |d   d<   |j                  t	        ||             : |D ];  }|d   d   }	|d   d   }
|D cg c]  }|	|d   cxk  r|
k  sn n| }}||d   d<   = y y c c}w )	Nr(   r&   headingr*   idr   r   r   )tokensappend	enumerater    r   )r   r4   r#   sectionsheadingstok	toc_itemsisec_min_maxitemr&   s                r   toc_hookzTableOfContents.toc_hook=   s    <<C6{e#$V	)$	   I#H-3%)%=%=c1%EGT"  !3B!<= .  7|K07|K0(1M	TT!W5L5Lt	M&)GU#	    Ns   -CC	directivec                    |j                   r||j                   j                  dk(  rb|j                  d| j                         |j                  j                  | j                         |j                   j                  dt               y y y )Nhtmlr&   )rendererNAMEregisterr3   before_render_hooksr9   rD   render_html_toc)r   rE   r4   s      r   __call__zTableOfContents.__call__T   sa    ;;2;;++v5udjj1""))$--8KK  8	 6;r   )r
      )r4   r   r#   r   r   N)__name__
__module____qualname__intr   r   r   r   r    r   r3   rD   r   rM    r   r   r   r      s    ## #c #$ #'c3h ' ' 'D= DU3Z D DQUVY[^V^Q_ D4*.9- 9Z 9D 9r   r   rH   r   r0   r%   r*   r   c                 ^    |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	   )rH   r0   r%   r*   contentrG   s         r   rL   rL   \   sL    #E%L)G!DNU"^33D'>N**r   r1   namedefaultc                     | j                  |      }|s|S 	 t        |      S # t        t        f$ r t        d| d      w xY w)N"z" option MUST be integer)getrR   r/   	TypeError)r1   rV   rW   levels       r   r.   r.   h   sP    KKE=5z	" =1TF":;<<=s	   
" AN)F)__doc__typingr   r   r   r   r&   r   r	   _baser   r   block_parserr   corer   r   markdownr   r   r   boolrL   r.   rS   r   r   <module>rd      s    3 2 3 1*/#>9o >9B	+n 	+S 	+D 	+[^ 	+cf 	+=d38n =C =# =# =r   