Ë
    Áj¡  ã                  óð   — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	Z	erdd	l
m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d„Zdd„Zdd„Z G d„ de«      Z G d„ de«      Zd„ Zy)zú
Adds attribute list syntax to Python-Markdown.
Inspired by
[Maruku](http://maruku.rubyforge.org/proposal.html#attribute_lists)'s
feature of the same name.

See the [documentation](https://Python-Markdown.github.io/extensions/attr_list)
for details.
é    )Úannotations)ÚTYPE_CHECKINGé   )Ú	Extensioné   )ÚTreeprocessorN)ÚElementc                óR   — |j                  dd«      \  }}||j                  d«      fS )NÚ=r   Ú"©ÚsplitÚstrip©ÚsÚtÚkÚvs       úP/var/www/html/venv/lib/python3.12/site-packages/markdown/extensions/attr_list.pyÚ_handle_double_quoter   &   ó'   € Ø�7‰7�3˜‹?�D€A€qØˆa�g‰g�c‹lˆ?Ðó    c                óR   — |j                  dd«      \  }}||j                  d«      fS )Nr   r   Ú'r   r   s       r   Ú_handle_single_quoter   +   r   r   c                ó&   — |j                  dd«      S )Nr   r   )r   ©r   r   s     r   Ú_handle_key_valuer   0   s   € Ø�7‰7�3˜‹?Ðr   c                ój   — |j                  d«      rd|dd  fS |j                  d«      rd|dd  fS ||fS )NÚ.r   Ú#Úid)Ú
startswithr   s     r   Ú_handle_wordr$   4   sC   € Ø‡|�|�CÔØ�A�a�b�EˆzÐØ‡|�|�CÔØ�Q�q�r�Uˆ{ÐØˆaˆ4€Kr   z[^ =}]+=".*?"z[^ =}]+='.*?'z[^ =}]+=[^ =}]+z[^ =}]+)Ú Nc                ót   — t         j                  | «      \  }}|j                  d«      }|dk7  r||d nd}||fS )zø Parse attribute list and return a list of attribute tuples.

    Additionally, return any text that remained after a curly brace. In typical cases, its presence
    should mean that the input does not match the intended attribute list syntax.
    Ú}éÿÿÿÿNÚ )Ú_scannerÚscanÚfind)Úattrs_stringÚattrsÚ	remainderÚindexs       r   Úget_attrs_and_remainderr1   E   sD   € ô  —}‘} \Ó2Ñ€Eˆ9à�N‰N˜3Ó€EØ%*¨b¢[�	˜%˜&Ñ!°b€IØ�)ÐÐr   c                ó   — t        | «      d   S )z4 Soft-deprecated. Prefer `get_attrs_and_remainder`. r   )r1   )Ústrs    r   Ú	get_attrsr4   R   s   € ä" 3Ó'¨Ñ*Ð*r   c                ó   — | j                   dv S )N)Úh1Úh2Úh3Úh4Úh5Úh6)Útag)Úelems    r   Úisheaderr>   W   s   € Ø�8‰8Ð;Ð;Ð;r   c                  ó  — e Zd ZdZ ej
                  dj                  e«      «      Z ej
                  dj                  e«      «      Z ej
                  dj                  e«      «      Z	 ej
                  d«      Z
dd„Zddœdd	„Zdd
„Zy)Ú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                ól  — |j                  «       D �]   }| j                  j                  |j                  «      �rz| j                  }t        |«      s|j                  dv r| j                  }t        |«      �rÀ|j                  dk(  �r°d }t        |«      D ]  \  }}|j                  dv sŒ|} n |€~|d   j                  ro|j                  |d   j                  «      }|sŒÐ| j                  ||j                  d«      d¬«      rŒô|d   j                  d |j                  «        |d   _	        �Œ|�‘|dkD  rŒ||dz
     j                  rz|j                  ||dz
     j                  «      }|s�Œ\| j                  ||j                  d«      d¬«      r�Œ�||dz
     j                  d |j                  «        ||dz
     _	        �Œ±|j                  s�Œ¿|j                  |j                  «      }|s�ŒÞ| j                  ||j                  d«      d¬«      r�Œ|j                  d |j                  «        |_        �Œ't        |«      rÁ|d   j                  r²|j                  |d   j                  «      }|s�Œc| j                  ||j                  d«      d¬«      r�Œˆ|d   j                  d |j                  «        |d   _	        t        |«      s�Œ½|d   j                  j                  d	«      j                  «       |d   _	        �Œó|j                  s�Œ|j                  |j                  «      }|s�Œ | j                  ||j                  d«      d¬«      r�ŒE|j                  d |j                  «        |_        t        |«      s�Œt|j                  j                  d	«      j                  «       |_        �Œ¤|j                  s�Œ²| j                   j#                  |j                  «      }|s�ŒÛ| j                  ||j                  d«      «      }|j                  |j%                  «       d  |z   |_	        �Œ# y )
N)ÚdtÚtdÚthÚli)ÚulÚolr(   r   T©Ústrictr   r!   )ÚiterÚmdÚis_block_levelr<   ÚBLOCK_REr>   Ú	HEADER_REÚlenÚ	enumerateÚtailÚsearchÚassign_attrsÚgroupÚstartÚtextÚrstripÚ	INLINE_REÚmatchÚend)	ÚselfÚdocr=   ÚREÚposÚiÚchildÚmr/   s	            r   ÚrunzAttrListTreeprocessor.rung   s,  € Ø—H‘H—JˆDØ�w‰w×%Ñ% d§h¡hÕ/à—]‘]�Ü˜D”> T§X¡XÐ1CÑ%CàŸ™�BÜ�t•9 §¡¨TÓ!1à�Cä$-¨d¦O™˜˜5Ø Ÿ9™9¨Ò4Ø"#˜CÙ!ð %4ð �{ t¨B¡x§}¢}àŸI™I d¨2¡h§m¡mÓ4˜ÚØ#'×#4Ñ#4°T¸1¿7¹7À1»:ÈdÐ#4Õ#SØ04°R±·±¸j¸q¿w¹w»yÐ0I  R¡¦Ø˜¨S°1ªW¸¸cÀ!¹e¹×9IÒ9IàŸI™I d¨3¨q©5¡k×&6Ñ&6Ó7˜ÛØ#'×#4Ñ#4°T¸1¿7¹7À1»:ÈdÐ#4Ö#SØ37¸¸A¹±;×3CÑ3CÀJÀQÇWÁWÃYÐ3O  S¨¡U¡Ö 0ØŸœàŸI™I d§i¡iÓ0˜ÛØ#'×#4Ñ#4°T¸1¿7¹7À1»:ÈdÐ#4Ö#SØ,0¯I©I°j°q·w±w³yÐ,A ¦	Ü˜”Y 4¨¡8§=¢=àŸ	™	 $ r¡(§-¡-Ó0�AÛØ#×0Ñ0°°q·w±w¸q³zÈ$Ð0ÖOØ,0°©H¯M©M¸*¸1¿7¹7»9Ð,E˜D ™HœMÜ'¨ž~à04°R±·±×0DÑ0DÀSÓ0I×0PÑ0PÓ0R  R¡¦Ø—Y”YàŸ	™	 $§)¡)Ó,�AÛØ#×0Ñ0°°q·w±w¸q³zÈ$Ð0ÖOØ(,¯	©	°*°1·7±7³9Ð(=˜DœIÜ'¨ž~à,0¯I©I×,<Ñ,<¸SÓ,A×,HÑ,HÓ,J ¦	ð —9”9ØŸ™×,Ñ,¨T¯Y©YÓ7�AÛØ$(×$5Ñ$5°d¸A¿G¹GÀA»JÓ$G˜	Ø$(§I¡I¨a¯e©e«g¨hÐ$7¸)Ñ$C˜ž	ñs r   FrH   c               ó   — t        |«      \  }}|r|r|S |D ]t  \  }}|dk(  rI|j                  d«      }|r#|j                  ddj                  ||«      «       ŒA|j                  d|«       ŒT|j                  | j	                  |«      |«       Œv |S )zê Assign `attrs` to element.

        If the `attrs_string` has an extra closing curly brace, the remaining text is returned.

        The `strict` argument controls whether to still assign `attrs` if there is a remaining `}`.
        r    Úclassz{} {})r1   ÚgetÚsetÚformatÚsanitize_name)	r[   r=   r-   rI   r.   r/   r   r   Úclss	            r   rS   z"AttrListTreeprocessor.assign_attrs£   sŽ   € ô 3°<Ó@ÑˆˆyÙ‘iØÐã‰DˆAˆqØ�CŠxà—h‘h˜wÓ'�ÙØ—H‘H˜W g§n¡n°S¸!Ó&<Õ=à—H‘H˜W aÕ(ð —‘˜×+Ñ+¨AÓ.°Õ2ð ð Ðr   c                ó:   — | j                   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)r[   Únames     r   rh   z#AttrListTreeprocessor.sanitize_name¼   s   € ð
 �|‰|×Ñ  TÓ*Ð*r   N)r\   r	   ÚreturnÚNone)r=   r	   r-   r3   rI   Úboolro   r3   )rn   r3   ro   r3   )Ú__name__Ú
__module__Ú__qualname__ÚBASE_REÚreÚcompilerg   rN   rM   rX   rl   rb   rS   rh   © r   r   r@   r@   [   s†   „ à0€GØ�—
‘
˜>×0Ñ0°Ó9Ó:€IØˆr�z‰zÐ*×1Ñ1°'Ó:Ó;€HØ�—
‘
˜6Ÿ=™=¨Ó1Ó2€IØˆb�j‰jð Hó I€Gó:Dðx PUõ ô2+r   r@   c                  ó   — e Zd ZdZd„ Zy)ÚAttrListExtensionz. Attribute List extension for Python-Markdown c                ór   — |j                   j                  t        |«      dd«       |j                  | «       y )NÚ	attr_listé   )ÚtreeprocessorsÚregisterr@   ÚregisterExtension)r[   rK   s     r   ÚextendMarkdownz AttrListExtension.extendMarkdownÆ   s.   € Ø
×Ñ×"Ñ"Ô#8¸Ó#<¸kÈ1ÔMØ
×Ñ˜TÕ"r   N)rr   rs   rt   Ú__doc__r�   rx   r   r   rz   rz   Ä   s
   „ Ù8ó#r   rz   c                 ó   — t        di | ¤ŽS )Nrx   )rz   )Úkwargss    r   ÚmakeExtensionr…   Ë   s   € ÜÑ&˜vÑ&Ð&r   )r-   r3   ro   z!tuple[list[tuple[str, str]], str])r3   r3   ro   zlist[tuple[str, str]])r=   r	   ro   rq   )r‚   Ú
__future__r   Útypingr   r)   r   r~   r   rv   Úxml.etree.ElementTreer	   r   r   r   r$   ÚScannerr*   r1   r4   r>   r@   rz   r…   rx   r   r   Ú<module>rŠ      s¡   ðñ"õ #Ý  å Ý *Û 	áÝ-òò
ò
òð ˆ2�:‰:ØÐ+Ð,ØÐ+Ð,ØÐ*Ð+Ø�ÐØðó €ó
ó+ó
<ôf+˜Mô f+ôR#˜	ô #ó'r   