Ë
    Á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	m
Z
 dd	lmZmZ dd
lmZ ddlZddlmc mZ erddlmZ ddlmZ  G d„ de«      Z G d„ de
«      Z G d„ de«      Z  ed«      e«      Z ed«       G d„ de«      «       Zd„ Zy)z¡
This extension adds abbreviation handling to Python-Markdown.

See the [documentation](https://Python-Markdown.github.io/extensions/abbreviations)
for details.
é    )Úannotationsé   )Ú	Extensioné   )ÚBlockProcessor)ÚInlineProcessor)ÚTreeprocessor)ÚAtomicStringÚ
deprecated)ÚTYPE_CHECKINGN)ÚMarkdown)ÚBlockParserc                  ó<   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zdd„Zd„ Zˆ xZ	S )ÚAbbrExtensionz- Abbreviation Extension for Python-Markdown. c                óX   •— di dgi| _         	 t        ‰| �  di |¤Ž i | _        i | _        y)z( Initiate Extension and set up configs. Úglossaryz`A dictionary where the `key` is the abbreviation and the `value` is the definition.Default: `{}`N© )ÚconfigÚsuperÚ__init__Úabbrsr   )ÚselfÚkwargsÚ	__class__s     €úK/var/www/html/venv/lib/python3.12/site-packages/markdown/extensions/abbr.pyr   zAbbrExtension.__init__*   sA   ø€ ð Øð ðð
ˆŒð 	/Ü‰ÑÑ"˜6Ò"ØˆŒ
Øˆ�ó    c                óœ   — | j                   j                  «        | j                  r&| j                   j                  | j                  «       yy)z- Clear all previously defined abbreviations. N)r   Úclearr   Úupdate©r   s    r   ÚresetzAbbrExtension.reset8   s4   € à�
‰
×ÑÔØ�MŠMØ�J‰J×Ñ˜dŸm™mÕ,ð r   c                ó8   — | j                   j                  «        y)z, Clear all abbreviations from the glossary. N)r   r   r    s    r   Úreset_glossaryzAbbrExtension.reset_glossary>   s   € à�‰×ÑÕr   c                ó4   — |ri |¥| j                   ¥| _         yy)z\Adds `dictionary` to our glossary. Any abbreviations that already exist will be overwritten.N)r   )r   Ú
dictionarys     r   Úload_glossaryzAbbrExtension.load_glossaryB   s   € áØ;˜zÐ;¨T¯]©]Ð;ˆD�Mð r   c                óÂ  — | j                   d   d   r!| j                  | j                   d   d   «       | j                  j                  | j                  «       |j                  | «       |j                  j                  t        || j                  «      dd«       |j                  j                  j                  t        |j                  | j                  «      dd«       y)z6 Insert `AbbrTreeprocessor` and `AbbrBlockprocessor`. r   r   Úabbré   é   N)r   r&   r   r   r   ÚregisterExtensionÚtreeprocessorsÚregisterÚAbbrTreeprocessorÚparserÚblockprocessorsÚAbbrBlockprocessor)r   Úmds     r   ÚextendMarkdownzAbbrExtension.extendMarkdownG   s¥   € à�K‰K˜
Ñ# AÒ&Ø×Ñ˜tŸ{™{¨:Ñ6°qÑ9Ô:Ø�
‰
×Ñ˜$Ÿ-™-Ô(Ø
×Ñ˜TÔ"Ø
×Ñ×"Ñ"Ô#4°R¸¿¹Ó#DÀfÈaÔPØ
�	‰	×!Ñ!×*Ñ*Ô+=¸b¿i¹iÈÏÉÓ+TÐV\Ð^`Õar   )r%   zdict[str, str])
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r!   r#   r&   r3   Ú__classcell__©r   s   @r   r   r   '   s    ø„ Ù7ôò-òó<ö
br   r   c                  ó@   ‡ — e Zd ZdZddˆ fd„Zdd„Zd	d
d„Zdd„Zˆ xZS )r.   z3 Replace abbreviation text with `<abbr>` elements. c                óH   •— |�|ni | _         d | _        t        ‰| �  |«       y ©N)r   ÚREr   r   )r   r2   r   r   s      €r   r   zAbbrTreeprocessor.__init__T   s%   ø€ Ø$)Ð$5™5¸2ˆŒ
Ø)-ˆŒÜ‰Ñ˜Õr   c                ód   — t        j                  dd|i«      }t        |«      |_        ||_        |S )z Create an `abbr` element. r(   Útitle)ÚetreeÚElementr
   ÚtextÚtail)r   r?   rB   rC   r(   s        r   Úcreate_elementz AbbrTreeprocessor.create_elementY   s/   € ä�}‰}˜V g¨uÐ%5Ó6ˆÜ  Ó&ˆŒ	ØˆŒ	Øˆr   c                ó
  — t        |«      D ]  }| j                  ||«       Œ |j                  x}rÜt        |t        «      sÌt        t        | j                  j                  |«      «      «      D ]•  }| j                  |j                  d«         sŒ"| j                  | j                  |j                  d«         |j                  d«      ||j                  «       d «      }|j                  d|«       |d|j                  «        }Œ— ||_        |�õ|j                  rè|j                  }t        |«      j                  |«      dz   }t        |t        «      s®t        t        | j                  j                  |«      «      «      D ]v  }| j                  | j                  |j                  d«         |j                  d«      ||j                  «       d «      }|j                  ||«       |d|j                  «        }Œx ||_        yyyy)zW Recursively iterate over elements, run regex on text and wrap matches in `abbr` tags. r   Nr   )ÚreversedÚiter_elementrB   Ú
isinstancer
   Úlistr=   Úfinditerr   ÚgrouprD   ÚendÚinsertÚstartrC   Úindex)	r   ÚelÚparentÚchildrB   Úmr(   rC   rO   s	            r   rG   zAbbrTreeprocessor.iter_element`   s«  € ä˜b–\ˆEØ×Ñ˜e RÕ(ð "à—7‘7ˆ?ˆ4ˆ?Ü˜d¤LÔ1Ü!¤$ t§w¡w×'7Ñ'7¸Ó'=Ó">Ö?�AØ—z‘z !§'¡'¨!£*Ó-Ø#×2Ñ2°4·:±:¸a¿g¹gÀa»jÑ3IÈ1Ï7É7ÐSTË:ÐW[Ð\]×\aÑ\aÓ\cÐ\dÐWeÓf˜ØŸ	™	 ! TÔ*Ø# J Q§W¡W£YÐ/™ð	 @ð
 �”ØÐ "§'¢'Ø—7‘7ˆDÜ˜“L×&Ñ& rÓ*¨QÑ.ˆEÜ˜d¤LÔ1Ü!¤$ t§w¡w×'7Ñ'7¸Ó'=Ó">Ö?�AØ×.Ñ.¨t¯z©z¸!¿'¹'À!»*Ñ/EÀqÇwÁwÈqÃzÐSWÐXY×X]ÑX]ÓX_ÐX`ÐSaÓb�DØ—M‘M %¨Ô.Ø 
 §¡£Ð+‘Dð @ð �•ð 2ð #*Ðr   c                ó  — | j                   syt        | j                   j                  «       «      }|j                  t        d¬«       t        j                  ddj                  d„ |D «       «      › d�«      | _        | j                  |«       y)z0 Step through tree to find known abbreviations. NT)ÚkeyÚreversez\b(?:Ú|c              3  óF   K  — | ]  }t        j                  |«      –— Œ y ­wr<   )ÚreÚescape)Ú.0rU   s     r   Ú	<genexpr>z(AbbrTreeprocessor.run.<locals>.<genexpr>~   s   è ø€ Ð/TÉ)À3´·	±	¸#·É)ùs   ‚!z)\b)
r   rI   ÚkeysÚsortÚlenrY   ÚcompileÚjoinr=   rG   )r   ÚrootÚ	abbr_lists      r   ÚrunzAbbrTreeprocessor.runv   si   € à�zŠzàä˜Ÿ™Ÿ™Ó*Ó+ˆ	Ø�‰œ3¨ˆÔ-Ü—*‘*˜v s§x¡xÑ/TÉ)Ó/TÓ'TÐ%VÐVZÐ[Ó\ˆŒà×Ñ˜$Õr   )NN)r2   zMarkdown | Noner   zdict | None)r?   ÚstrrB   re   rC   re   Úreturnúetree.Elementr<   )rP   rg   rQ   úetree.Element | Nonerf   ÚNone)rb   rg   rf   rh   )	r4   r5   r6   r7   r   rD   rG   rd   r8   r9   s   @r   r.   r.   Q   s   ø„ Ù=öó
ô÷,
 r   r.   c                  ón   ‡ — e Zd ZdZ ej
                  dej                  «      Zdˆ fd„Zdd„Z	dd„Z
ˆ xZS )	r1   z) Parse text for abbreviation references. z7^[*]\[(?P<abbr>[^\\]*?)\][ ]?:[ ]*\n?[ ]*(?P<title>.*)$c                ó2   •— || _         t        ‰| �	  |«       y r<   )r   r   r   )r   r/   r   r   s      €r   r   zAbbrBlockprocessor.__init__ˆ   s   ø€ Ø ˆŒ
Ü‰Ñ˜Õ r   c                 ó   — y)NTr   )r   rQ   Úblocks      r   ÚtestzAbbrBlockprocessor.testŒ   s   € Ør   c                óÂ  — |j                  d«      }| j                  j                  |«      }|�r|j                  d«      j	                  «       }|j                  d«      j	                  «       }|rÞ|rÜ|dk(  s|dk(  r| j
                  j                  |«       n|| j
                  |<   ||j                  «       d j	                  «       r2|j                  d||j                  «       d j                  d«      «       |d|j                  «        j	                  «       r2|j                  d|d|j                  «        j                  d«      «       y|j                  d|«       y	)
z�
        Find and remove all abbreviation references from the text.
        Each reference is added to the abbreviation collection.

        r   r(   r?   z''z""NÚ
TF)Úpopr=   ÚsearchrK   Ústripr   rL   rM   ÚlstriprN   Úrstrip)r   rQ   Úblocksrm   rS   r(   r?   s          r   rd   zAbbrBlockprocessor.run�   s  € ð —
‘
˜1“ˆØ�G‰G�N‰N˜5Ó!ˆÚØ—7‘7˜6“?×(Ñ(Ó*ˆDØ—G‘G˜GÓ$×*Ñ*Ó,ˆEÙ™Ø˜D’= E¨T¢MØ—J‘J—N‘N 4Õ(à',�D—J‘J˜tÑ$Ø˜Ÿ™›˜�?×(Ñ(Ô*à—M‘M ! U¨1¯5©5«7¨8 _×%;Ñ%;¸DÓ%AÔBØ˜˜!Ÿ'™'›)Ð$×*Ñ*Ô,à—M‘M ! U¨:¨A¯G©G«IÐ%6×%=Ñ%=¸dÓ%CÔDØà�‰�a˜ÔØr   )r/   r   r   Údict)rQ   rg   rm   re   rf   Úbool)rQ   rg   rv   z	list[str]rf   rx   )r4   r5   r6   r7   rY   r`   Ú	MULTILINEr=   r   rn   rd   r8   r9   s   @r   r1   r1   ƒ   s/   ø„ Ù3à	ˆ�‰ÐNÐPR×P\ÑP\Ó	]€Bõ!ó÷r   r1   z4This class has been renamed to `AbbrBlockprocessor`.zJThis class will be removed in the future; use `AbbrTreeprocessor` instead.c                  ó,   ‡ — e Zd ZdZdˆ fd„Zdd„Zˆ xZS )ÚAbbrInlineProcessorz Abbreviation inline pattern. c                ó2   •— t         ‰| �  |«       || _        y r<   )r   r   r?   )r   Úpatternr?   r   s      €r   r   zAbbrInlineProcessor.__init__²   s   ø€ Ü‰Ñ˜Ô!Øˆ�
r   c                óè   — t        j                  d«      }t        |j                  d«      «      |_        |j                  d| j                  «       ||j                  d«      |j                  d«      fS )Nr(   r?   r   )	r@   rA   r
   rK   rB   Úsetr?   rN   rL   )r   rS   Údatar(   s       r   ÚhandleMatchzAbbrInlineProcessor.handleMatch¶   sS   € Ü�}‰}˜VÓ$ˆÜ  §¡¨£Ó1ˆŒ	Ø�‰�˜$Ÿ*™*Ô%Ø�Q—W‘W˜Q“Z §¡ q£Ð)Ð)r   )r}   re   r?   re   )rS   zre.Match[str]r€   re   rf   ztuple[etree.Element, int, int])r4   r5   r6   r7   r   r�   r8   r9   s   @r   r{   r{   ®   s   ø„ á(õ÷*r   r{   c                 ó   — t        di | ¤ŽS )Nr   )r   )r   s    r   ÚmakeExtensionrƒ   ½   s   € ÜÑ"˜6Ñ"Ð"r   )r7   Ú
__future__r   Ú r   r0   r   Úinlinepatternsr   r,   r	   Úutilr
   r   Útypingr   rY   Úxml.etree.ElementTreer@   ÚElementTreer   Úblockparserr   r   r.   r1   ÚAbbrPreprocessorr{   rƒ   r   r   r   Ú<module>r�      sš   ðñ õ #å Ý ,Ý ,Ý *ß +Ý  Û 	ß %Ð %áÝÝ)ô'b�Iô 'bôT/ ˜ô / ôd%˜ô %ðP V‘:ÐTÓUÐVhÓiÐ ñ ÐXÓYô*˜/ó *ó Zð*ó#r   