
    Lc	                     p    d Z ddlZdgZ ej        d          Z G d de          Z G d de          ZdS )a  
    Directive Syntax
    ~~~~~~~~~~~~~~~~~

    This syntax is inspired by reStructuredText. The syntax is very powerful,
    that you can define a lot of custom features by your own.

    The syntax looks like::

        .. directive-name:: directive value
           :option-key: option value
           :option-key: option value

           full featured markdown text here

    :copyright: (c) Hsiaoming Yang
    N	Directivez\.\.( +)(?P<name>[a-zA-Z0-9_-]+)\:\: *(?P<value>[^\n]*)\n+(?P<options>(?:  \1 {0,3}\:[a-zA-Z0-9_-]+\: *[^\n]*\n+)*)(?P<text>(?:  \1 {0,3}[^\n]*\n+)*)c                   L    e Zd Zed             Zed             Zd Zd Zd ZdS )r   c                 :   |                      d          }|                                sdS t          |                      d                    dz   d                    fd|                                D                       }|                    d          dz   S )Ntext       
c              3   ,   K   | ]}|d          V  d S N ).0lineleadings     7lib/python3.11/site-packages/mistune/directives/base.py	<genexpr>z'Directive.parse_text.<locals>.<genexpr>'   s+      FFDghhFFFFFF    )groupstriplenjoin
splitlineslstrip)mr   r   s     @r   
parse_textzDirective.parse_text    s    wwvzz|| 	2aggajj//A%yyFFFFDOO4E4EFFFFF{{4  4''r   c                 x   |                      d          }|                                sg S g }t          j        d|          D ]v}|                                dd          }|s!|                    d          }|d |         }||dz   d                                          }|                    ||f           w|S )Noptionsz\n+r   :)r   r   resplitfindappend)r   r   r   r   ikvs          r   parse_optionszDirective.parse_options*   s    wwy!!zz|| 	IHVT** 	# 	#D::<<#D 		#ARaRAQUVV""$$ANNAq6""""r   c                     t          |dd           }|st                      } ||           |                    || j                   d S )N
_directive)getattrPluginDirectiveregister_directiveparse)selfmdnameplugins       r   r+   zDirective.register_directive;   sQ    \400 	$&&FF2JJJ!!$
33333r   c                     t                      r   NotImplementedError)r-   blockr   states       r   r,   zDirective.parseC       !###r   c                     t                      r   r2   r-   r.   s     r   __call__zDirective.__call__F   r6   r   N)	__name__
__module____qualname__staticmethodr   r&   r+   r,   r9   r   r   r   r   r      su        ( ( \(   \ 4 4 4$ $ $$ $ $ $ $r   c                   &    e Zd Zd Zd Zd Zd ZdS )r*   c                     i | _         d S r   _directives)r-   s    r   __init__zPluginDirective.__init__K   s    r   c                     || j         |<   d S r   r@   )r-   r/   fns      r   r+   z"PluginDirective.register_directiveN   s    !#r   c                     |                     d          }| j                            |          }|r ||||          S dd|z   d}|S )Nr/   block_errorzUnsupported directive: )typeraw)r   rA   get)r-   r4   r   r5   r/   methodtokens          r   parse_block_directivez%PluginDirective.parse_block_directiveQ   sc    wwv!%%d++ 	+6%E*** ",t3
 
 r   c                     | |_         |j                            dt          | j                   |j        j                            d           d S )N	directive)r(   r4   register_ruleDIRECTIVE_PATTERNrL   rulesr"   r8   s     r   r9   zPluginDirective.__call__]   sO    
*&	
 	
 	
 	k*****r   N)r:   r;   r<   rB   r+   rL   r9   r   r   r   r*   r*   J   sP          $ $ $
 
 
+ + + + +r   r*   )__doc__r   __all__compilerP   objectr   r*   r   r   r   <module>rV      s    $ 
			- BJ*  ($ ($ ($ ($ ($ ($ ($ ($V+ + + + +f + + + + +r   