o
    tf                     @   sF   d Z ddlmZ ddlmZmZ G dd deZddd	Zd
d ZdS )at  
    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.
   )DirectivePlugin   )normalize_toc_itemrender_toc_ulc                   @   s6   e Zd ZdddZdd Zdd Zd	d
 Zdd ZdS )TableOfContentsr      c                 C   s   || _ || _d S )N)	min_level	max_level)selfr   r	    r   _/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/mistune/directives/toc.py__init__   s   
zTableOfContents.__init__c                 C   s   dt |d  S )NZtoc_r   )str)r
   tokenindexr   r   r   generate_heading_id   s   z#TableOfContents.generate_heading_idc                 C   s   |  |}| |}|rEt|}d|v }t|d| j}t|d| j}	|| jk r/td| j |	| jkr<td| j ||	krDtdnd}| j}| j}	||	|d}
d	|pWd
|
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)Zparse_titleZparse_optionsdict_normalize_levelr   r	   
ValueError)r
   blockmstatetitleoptionsZ	d_optionsr   r   r	   r   r   r   r   parse   s,   



zTableOfContents.parsec           
         s   g }g }|j D ]}|d dkr|| q|d dkr || q|rag }t|D ]\}}| |||d d< |t|| q)|D ] }|d d |d d   fdd	|D }	|	|d d< qBd S d S )
Nr   r   headingr   idr   r	   c                    s,   g | ]}|d    kr krn n|qS )    r   ).0item_max_minr   r   
<listcomp>J   s   , z,TableOfContents.toc_hook.<locals>.<listcomp>)tokensappend	enumerater   r   )
r
   mdr   sectionsZheadingstokZ	toc_itemsisecr   r   r&   r   toc_hook6   s(   

zTableOfContents.toc_hookc                 C   sH   |j r |j jdkr"|d| j |j| j |j dt d S d S d S )Nhtmlr   )rendererNAMEregisterr    Zbefore_render_hooksr+   r2   render_html_toc)r
   	directiver-   r   r   r   __call__M   s
   zTableOfContents.__call__N)r   r   )__name__
__module____qualname__r   r   r    r2   r9   r   r   r   r   r      s    
r   Fc                 K   sH   |sd}|d }t |d }d}|s|d7 }|d| d 7 }|| d S )NzTable of Contentsr   z<details class="toc"z openz>
<summary>z</summary>
z</details>
)r   )r4   r   r   r   r   contentr3   r   r   r   r7   U   s   r7   c              	   C   s@   |  |}|s	|S zt|W S  ttfy   td| dw )N"z" option MUST be integer)getintr   	TypeError)r   namedefaultlevelr   r   r   r   b   s   

r   N)F)	__doc___baser   r   r   r   r   r7   r   r   r   r   r   <module>   s    
A