U
    mufe	  ã                   @   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 }| ¡ }|sJt |¡rJt d|¡}d}nd}| |¡}| ¡ | jd kr€t	| j
ƒ}| d¡ n| j
}|  ||¡ ||jdœ}	|r°| |	¡ |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ÚtextZend_posr   Útok_typeÚchildÚrulesÚtoken© r   ú;/tmp/pip-unpacked-wheel-8p1ovdot/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   Z	new_stater
   r   r   r    Úparse_inline_spoiler*   s    

r)   c                 C   s   d| d S )Nz<div class="spoiler">
z</div>
r   ©Úrendererr   r   r   r    Úrender_block_spoiler3   s    r,   c                 C   s   d| d S )Nz<span class="spoiler">z</span>r   r*   r   r   r    Úrender_inline_spoiler7   s    r-   c                 C   sR   | j  ddt¡ | j dtt¡ | jrN| jjdkrN| j dt¡ | j dt	¡ 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,   r-   )Zmdr   r   r    r   ;   s
    )ÚreÚ__all__ÚcompileÚMr   r   r0   r!   r)   r,   r-   r   r   r   r   r    Ú<module>   s   
	