o
    ¹¼tfe	  ã                   @   sV   d dl Z dgZe  de j¡Ze  d¡ZdZdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ ZdS )é    NÚspoilerz
^ {0,3}! ?z^( {0,3}![^\n]*\n)+$z>!\s*(?P<spoiler_text>.+?)\s*!<c           
      C   sÀ   |   ||¡\}}| d¡s|d7 }| ¡ }|s%t |¡r%t d|¡}d}nd}| |¡}| ¡ | jd kr@t	| j
ƒ}| d¡ n| j
}|  ||¡ ||jdœ}	|rX| |	¡ |S | |	¡ |jS )NÚ
Ú Úblock_spoilerÚblock_quoteé   ©ÚtypeÚchildren)Zextract_block_quoteÚendswithÚdepthÚ_BLOCK_SPOILER_MATCHÚmatchÚ_BLOCK_SPOILER_STARTÚsubZchild_stateZmax_nested_levelÚlistZblock_quote_rulesÚremoveÚparseÚtokensZprepend_tokenÚappend_tokenÚcursor)
ÚblockÚmÚstateÚtextÚend_posr   Útok_typeÚchildÚrulesÚtoken© r    ú`/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/mistune/plugins/spoiler.pyÚparse_block_spoiler   s(   




r"   c                 C   s:   |  d¡}| ¡ }||_|  |¡}| d|dœ¡ | ¡ S )NZspoiler_textÚinline_spoilerr   )ÚgroupÚcopyÚsrcÚrenderr   Úend)Úinliner   r   r   Ú	new_stater
   r    r    r!   Úparse_inline_spoiler*   s   

r+   c                 C   ó   d| d S )Nz<div class="spoiler">
z</div>
r    ©Úrendererr   r    r    r!   Úrender_block_spoiler3   ó   r/   c                 C   r,   )Nz<span class="spoiler">z</span>r    r-   r    r    r!   Úrender_inline_spoiler7   r0   r1   c                 C   sZ   | j  ddt¡ | j dtt¡ | jr)| jjdkr+| j dt¡ | j dt	¡ dS dS dS )aƒ  A mistune plugin to support block and inline spoiler. The
    syntax is inspired by stackexchange:

    .. code-block:: text

        Block level spoiler looks like block quote, but with `>!`:

        >! this is spoiler
        >!
        >! the content will be hidden

        Inline spoiler is surrounded by `>!` and `!<`, such as >! hide me !<.

    :param md: Markdown instance
    r   Nr#   Úhtmlr   )
r   Úregisterr"   r)   ÚINLINE_SPOILER_PATTERNr+   r.   ÚNAMEr/   r1   )Úmdr    r    r!   r   ;   s   þ)ÚreÚ__all__ÚcompileÚMr   r   r4   r"   r+   r/   r1   r   r    r    r    r!   Ú<module>   s    
	