
    f                     H    d Z ddlmZ ddlmZmZ  G d de      Zd
dZd Zy	)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                   ,    e Zd ZddZd Zd Zd Zd Zy)TableOfContentsc                      || _         || _        y )N)	min_level	max_level)selfr
   r   s      Q/var/www/cvtools/html/venv/lib/python3.12/site-packages/mistune/directives/toc.py__init__zTableOfContents.__init__   s    ""    c                 $    dt        |dz         z   S )Ntoc_r   )str)r   tokenindexs      r   generate_heading_idz#TableOfContents.generate_heading_id   s    EAI&&r   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   blockmstate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   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       )tokensappend	enumerater   r   )r   mdr$   sectionsheadingstok	toc_itemsisec_min_maxitemr   s                r   toc_hookzTableOfContents.toc_hook6   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M&)GU#	*  Ns   -CCc                    |j                   r||j                   j                  dk(  rb|j                  d| j                         |j                  j                  | j                         |j                   j                  dt               y y y )Nhtmlr   )rendererNAMEregisterr(   before_render_hooksr.   r:   render_html_toc)r   	directiver0   s      r   __call__zTableOfContents.__call__M   sa    ;;2;;++v5udjj1""))$--8KK  8	 6;r   N)r      )__name__
__module____qualname__r   r   r(   r:   rC    r   r   r   r      s    #'D4*.9r   r   c                 h    |sd}|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   )r=   r%   r   r   r   contentr<   s          r   rA   rA   U   sU    #
,CE%L)G!DNU"^33D'>N**r   c                     | j                  |      }|s|S 	 t        |      S # t        t        f$ r t        d| d      w xY w)N"z" option MUST be integer)getintr!   	TypeError)r&   namedefaultlevels       r   r    r    b   sP    KKE=5z	" =1TF":;<<=s	   
" AN)F)	__doc___baser   r   r   r   r   rA   r    rH   r   r   <module>rU      s)    # 3>9o >9B
+=r   