
    cd                         d Z ddlmZ ddlmZ ddlZd Zd Zd	 Zd
 Z	 ej
        defdefdefde	fdg          Zd Zd Z G d de          Z G d de          Zd ZdS )a  
Attribute List Extension for Python-Markdown
============================================

Adds attribute list syntax. Inspired by
[maruku](http://maruku.rubyforge.org/proposal.html#attribute_lists)'s
feature of the same name.

See <https://Python-Markdown.github.io/extensions/attr_list>
for documentation.

Original code Copyright 2011 [Waylan Limberg](http://achinghead.com/).

All changes Copyright 2011-2014 The Python Markdown Project

License: [BSD](https://opensource.org/licenses/bsd-license.php)

   )	Extension   )Treeprocessor    Nc                 b    |                     dd          \  }}||                    d          fS )N=r   "splitstripstkvs       =lib/python3.11/site-packages/markdown/extensions/attr_list.py_handle_double_quoter      +    773??DAqaggcll?    c                 b    |                     dd          \  }}||                    d          fS )Nr   r   'r
   r   s       r   _handle_single_quoter      r   r   c                 .    |                     dd          S )Nr   r   )r   r   r   s     r   _handle_key_valuer   #   s    773??r   c                     |                     d          rd|dd          fS |                     d          rd|dd          fS ||fS )N.r   #id)
startswithr   s     r   _handle_wordr!   '   sW    ||C AabbEz||C QqrrU{a4Kr   z[^ =]+=".*?"z[^ =]+='.*?'z[^ =]+=[^ =]+z[^ =]+) Nc                 B    t                               |           d         S )z= Parse attribute list and return a list of attribute tuples. r   )_scannerscan)strs    r   	get_attrsr'   8   s    ==a  r   c                     | j         dv S )N)h1h2h3h4h5h6)tag)elems    r   isheaderr1   =   s    8;;;r   c                      e Zd ZdZ ej        d                    e                    Z ej        d                    e                    Z ej        d                    e                    Z	 ej        d          Z
d Zd Zd Zd	S )
AttrListTreeprocessorz!\{\:?[ ]*([^\}\n ][^\}\n]*)[ ]*\}z[ ]+{}[ ]*$z\n[ ]*{}[ ]*$z^{}z[^A-Z_a-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd\:\-\.0-9\u00b7\u0300-\u036f\u203f-\u2040]+c                    |                                 D ]=}| j                            |j                  r| j        }t          |          s	|j        dv r| j        }t          |          r|j        dk    rd }t          |          D ]\  }}|j        dv r|} n||d         j	        r|
                    |d         j	                  }|r[|                     ||                    d                     |d         j	        d |                                         |d         _	        ||dk    r||dz
           j	        r|
                    ||dz
           j	                  }|ra|                     ||                    d                     ||dz
           j	        d |                                         ||dz
           _	        |j        rk|
                    |j                  }|rO|                     ||                    d                     |j        d |                                         |_        +t          |          r|d         j	        r|
                    |d         j	                  }|r|                     ||                    d                     |d         j	        d |                                         |d         _	        t          |          r=|d         j	                            d                                          |d         _	        |j        r|
                    |j                  }|r|                     ||                    d                     |j        d |                                         |_        t          |          r1|j                            d                                          |_        |j	        rp| j                            |j	                  }|rO|                     ||                    d                     |j	        |                                d          |_	        ?d S )N)dttdthli)ulolr   r   r   )itermdis_block_levelr/   BLOCK_REr1   	HEADER_RElen	enumeratetailsearchassign_attrsgroupstarttextrstrip	INLINE_REmatchend)selfdocr0   REposichildms           r   runzAttrListTreeprocessor.runM   s   HHJJ 9	8 9	8Dw%%dh// 88]D>> (TX1C%C (Bt99 +GT!1 +GC$-dOO " "5 94 ""#C!E"  >tBx} >IId2hm44 F --dAGGAJJ???,0HM*17799*,EDHM >S1W >c!e9I >IId3q5k&677 L --dAGGAJJ???/3CE{/?

/KDQK, >IIdi00 > --dAGGAJJ???(,	*17799*(=DIYY G48= G		$r(-00A O))$

;;;(,Rjqwwyyj(AR#D>> O,0HM,@,@,E,E,L,L,N,NDHMY G		$),,A G))$

;;;$(Ijqwwyyj$9	#D>> G(,	(8(8(=(=(D(D(F(FDI 9 8,,TY77A 8))$

;;;$(Iaeegghh$7	s9	8 9	8r   c                 @   t          |          D ]\  }}|dk    rY|                    d          }|r+|                    dd                    ||                     M|                    d|           d|                    |                     |          |           dS )z Assign attrs to element. r   classz{} {}N)r'   getsetformatsanitize_name)rM   r0   attrsr   r   clss         r   rE   z"AttrListTreeprocessor.assign_attrs   s    e$$ 
	3 
	3DAqCx 	3hhw'' )HHWgnnS!&<&<====HHWa(((( ++A..2222
	3 
	3r   c                 8    | j                             d|          S )z{
        Sanitize name as 'an XML Name, minus the ":"'.
        See https://www.w3.org/TR/REC-xml-names/#NT-NCName
        _)NAME_REsub)rM   names     r   rZ   z#AttrListTreeprocessor.sanitize_name   s    
 |T***r   N)__name__
__module____qualname__BASE_RErecompilerY   r@   r?   rJ   r_   rT   rE   rZ    r   r   r3   r3   A   s        2G
>0099::Irz*11'::;;H
6==1122Ibj H I IG:8 :8 :8x3 3 3+ + + + +r   r3   c                       e Zd Zd ZdS )AttrListExtensionc                     |j                             t          |          dd           |                    |            d S )N	attr_list   )treeprocessorsregisterr3   registerExtension)rM   r=   s     r   extendMarkdownz AttrListExtension.extendMarkdown   s@    
""#8#<#<k1MMM
T"""""r   N)rb   rc   rd   rq   rh   r   r   rj   rj      s#        # # # # #r   rj   c                      t          di | S )Nrh   )rj   )kwargss    r   makeExtensionrt      s    &&v&&&r   )__doc__ r   rn   r   rf   r   r   r   r!   Scannerr$   r'   r1   r3   rj   rt   rh   r   r   <module>rx      sN   &       * * * * * * 				  
  
     2:*+*+()  ! ! !
< < <[+ [+ [+ [+ [+M [+ [+ [+|# # # # #	 # # #' ' ' ' 'r   