
    gi
                         d Z ddlZddlmZmZ ddlmZ 	 ddlmZ n# e$ r de	de	fdZY nw xY w G d	 d
          Z
ddZdS )a  
TOC extension
~~~~~~~~~~~~~

Renders the TOC(Table Of Content) for a markdown document.
This requires to install `toc` extras::

    pip install marko[toc]

Arguments:
    * opening: the opening tag, defaults to <ul>
    * closing: the closing tag, defaults to </ul>
    * item_format: the toc item format, defaults to '<li><a href="#{slug}">{text}</a></li>'

Usage::

    from marko import Markdown

    markdown = Markdown(extensions=['toc'])

    print(markdown(text))
    print(markdown.renderer.render_toc())

    N)MarkoExtensionrender_dispatch)HTMLRenderer)slugifysourcereturnc                     t          j        dd|                                                                                               dd          S )Nz	[^\w\- ]+  -)resubstriplowerreplace)r   s    e/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/marko/ext/toc.pyr   r   #   s>    vlB//5577==??GGSQQQ    c                   Z     e Zd ZdZdZdZ fdZddZ ee	          d             Z
 xZS )	TocRendererMixinz<ul>z</ul>z%<li><a href="#{slug}">{text}</a></li>c                 R    g | _         t                                                      S )N)headingssuper	__enter__)self	__class__s    r   r   zTocRendererMixin.__enter__,   s     ww  """r      c                 :   | j         sdS d }d }g }| j         D ]\  }}}|
|||z   k    r|!|}|}|                    | j        dz              ||dz
  k    r|                    | j        dz              |}||k    r(|                    | j        dz              |dz  }||k    (|                    | j                            ||          dz              t          ||dz             D ]}|                    | j        dz               d                    |          S )Nr
   
   )slugtext)r   appendopeningclosingitem_formatformatrangejoin)	r   maxdepthfirst_level
last_levelrvlevelr    r!   _s	            r   
render_toczTocRendererMixin.render_toc0   s]   } 	2
!% 	L 	LE4&5K(4J+J+J"#"
		$,-...UQY&&		$,-..."
u$$		$,-...a
 u$$ IId&--4d-CCdJKKKK{JN33 	+ 	+AIIdlT)****wwr{{r   c                    |                      |          }t          j        dd|          }t          |          }| j                            t          |j                  ||f           d                    |j        ||          S )Nz<.+?>r
   z<h{0} id="{1}">{2}</h{0}>
)	render_childrenr   r   r   r   r"   intr-   r&   )r   elementchildrenrawr    s        r   render_headingzTocRendererMixin.render_headingL   st    ''00fXr8,,s||c'-00$ABBB,33GM4RRRr   )r   )__name__
__module____qualname__r#   r$   r%   r   r/   r   r   r6   __classcell__)r   s   @r   r   r   '   s        GG9K# # # # #   8 _\""S S #"S S S S Sr   r   c                     i }| r| |d<   |r||d<   |r||d<   t          dt          f|          g}t          |          S )Nr#   r$   r%   r   )renderer_mixins)typer   r   )r#   r$   r%   optionsr<   s        r   make_extensionr?   U   sg    G %$	 %$	 -!,.1A0CWMMNO/::::r   )NNN)__doc__r   marko.helpersr   r   marko.html_rendererr   r   ImportErrorstrr   r?    r   r   <module>rF      s   2 
			 9 9 9 9 9 9 9 9 , , , , , ,R R R RR R R R R R R RR+S +S +S +S +S +S +S +S\	; 	; 	; 	; 	; 	;s    --