o
    >Di_                     @   s~   d Z ddlZddlmZ ddlmZ ddlmZmZ ddl	m
Z
 ddlmZ ddlmZmZ d	d
 ZG dd dZdd ZdS )a  
Code highlight extension
~~~~~~~~~~~~~~~~~~~~~~~~

Enable code highlight using ``pygments``. This requires to install `codehilite` extras::

    pip install marko[codehilite]

Arguments:
    All arguments are passed to ``pygments.formatters.html.HtmlFormatter``.

Usage::

    from marko import Markdown

    markdown = Markdown(extensions=['codehilite'])
    markdown.convert('```python filename="my_script.py"\nprint('hello world')\n```')
    N)	highlight)html)get_lexer_by_nameguess_lexer)ClassNotFound)HTMLRenderer)MarkoExtensionrender_dispatchc              	   C   s`   | si S i }|  dD ]"}|d\}}}|r-zt|}|||< W q tjy,   Y qw q|S )N,=)split	partitionjsonloadsJSONDecodeError)lineextrastokenkhas_eqvparsed_v r   M/var/www/Datamplify/venv/lib/python3.10/site-packages/marko/ext/codehilite.py_parse_extras   s   
r   c                   @   s    e Zd Zi Zeedd ZdS )CodeHiliteRendererMixinc                 C   s~   |j d j }i | jtt|dd }|jr-z	t|jdd}W n ty,   t|}Y nw t|}tj	di |}t
|||S )Nr   extraT)stripallr   )childrenoptionsr   getattrlangr   r   r   r   HtmlFormatterr   )selfelementcoder   lexer	formatterr   r   r   render_fenced_code1   s   z*CodeHiliteRendererMixin.render_fenced_codeN)__name__
__module____qualname__r   r	   r   r(   r   r   r   r   r   .   s    r   c                  K   s   t dtfd| i}t|gdS )Nr   r   )renderer_mixins)typer   r   )r   	mixin_clsr   r   r   make_extension@   s   r/   )__doc__r   pygmentsr   pygments.formattersr   pygments.lexersr   r   pygments.utilr   markor   marko.helpersr   r	   r   r   r/   r   r   r   r   <module>   s    