o
    7÷dŠ  ã                   @   s¤   d Z ddlmZ ddlmZ ddlZdd„ Zd	d
„ Zdd„ Zdd„ Z	e 
defdefdefde	fdg¡Zdd„ Zdd„ ZG dd„ deƒZG dd„ deƒZd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                 C   ó   |  dd¡\}}|| d¡fS )Nú=r   ú"©ÚsplitÚstrip©ÚsÚtÚkÚv© r   útC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\markdown/extensions/attr_list.pyÚ_handle_double_quote   ó   r   c                 C   r   )Nr   r   ú'r	   r   r   r   r   Ú_handle_single_quote   r   r   c                 C   s   |  dd¡S )Nr   r   )r
   ©r   r   r   r   r   Ú_handle_key_value#   s   r   c                 C   s<   |  d¡rd|dd … fS |  d¡rd|dd … fS ||fS )NÚ.r   ú#Úid)Ú
startswithr   r   r   r   Ú_handle_word'   s
   

r   z[^ =]+=".*?"z[^ =]+='.*?'z[^ =]+=[^ =]+z[^ =]+)ú Nc                 C   s   t  | ¡d S )z= Parse attribute list and return a list of attribute tuples. r   )Ú_scannerÚscan)Ústrr   r   r   Ú	get_attrs8   s   r"   c                 C   s
   | j dv S )N)Úh1Úh2Zh3Zh4Zh5Zh6)Útag)Úelemr   r   r   Úisheader=   s   
r'   c                   @   sb   e Zd ZdZe d e¡¡Ze d e¡¡Ze d e¡¡Z	e d¡Z
dd„ Zdd	„ Zd
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                 C   s–  |  ¡ D ]C}| j |j¡r'| j}t|ƒs|jdv r| j}t|ƒr¼|jdkr¼d }t|ƒD ]\}}|jdv r:|} nq-|d u rf|d j	rf| 
|d j	¡}|re|  || d¡¡ |d j	d | ¡ … |d _	q|d ur|dkr||d  j	r| 
||d  j	¡}|rœ|  || d¡¡ ||d  j	d | ¡ … ||d  _	q|jr»| 
|j¡}|r»|  || d¡¡ |jd | ¡ … |_qt|ƒrø|d j	rø| 
|d j	¡}|r÷|  || d¡¡ |d j	d | ¡ … |d _	t|ƒr÷|d j	 d¡ ¡ |d _	q|jr&| 
|j¡}|r&|  || d¡¡ |jd | ¡ … |_t|ƒr&|j d¡ ¡ |_q|j	rH| j |j	¡}|rH|  || d¡¡ |j	| ¡ d … |_	qd S )N)ÚdtÚtdÚthZli)ZulZoléÿÿÿÿr   r   r   )ÚiterÚmdZis_block_levelr%   ÚBLOCK_REr'   Ú	HEADER_REÚlenÚ	enumerateÚtailÚsearchÚassign_attrsÚgroupÚstartÚtextÚrstripÚ	INLINE_REÚmatchÚend)ÚselfÚdocr&   ZREÚposÚiÚchildÚmr   r   r   ÚrunM   sj   
þ€$€€€
€€ÇzAttrListTreeprocessor.runc                 C   sb   t |ƒD ]*\}}|dkr%| d¡}|r| dd ||¡¡ q| d|¡ q| |  |¡|¡ qdS )z Assign `attrs` to element. r   Úclassz{} {}N)r"   ÚgetÚsetÚformatÚsanitize_name)r=   r&   Úattrsr   r   Úclsr   r   r   r5   ‰   s   
öz"AttrListTreeprocessor.assign_attrsc                 C   s   | 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=   Únamer   r   r   rH   —   s   z#AttrListTreeprocessor.sanitize_nameN)Ú__name__Ú
__module__Ú__qualname__ZBASE_REÚreÚcompilerG   r0   r/   r:   rL   rC   r5   rH   r   r   r   r   r(   A   s    
<r(   c                   @   s   e Zd Zdd„ ZdS )ÚAttrListExtensionc                 C   s"   |j  t|ƒdd¡ | | ¡ d S )NÚ	attr_listé   )ÚtreeprocessorsÚregisterr(   ZregisterExtension)r=   r.   r   r   r   ÚextendMarkdown    s   z AttrListExtension.extendMarkdownN)rO   rP   rQ   rY   r   r   r   r   rT   Ÿ   s    rT   c                  K   s   t di | ¤ŽS )Nr   )rT   )Úkwargsr   r   r   ÚmakeExtension¥   s   r[   )Ú__doc__Ú r   rW   r   rR   r   r   r   r   ÚScannerr   r"   r'   r(   rT   r[   r   r   r   r   Ú<module>   s(    û	^