ó
    "nj÷  ã                  ó0  • S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  SS	KJrJr  SS
KJr  SSKrSSKJs  Jr  \(       a  SSKJr  SSKJr   " S S\5      r " S S\
5      r " S S\5      r\" S5      " \5      r\" S5       " S S\5      5       rS rg)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                  óH   ^ • \ rS rSrSrU 4S jrS rS rS	S jrS r	Sr
U =r$ )
ÚAbbrExtensioné'   z,Abbreviation Extension for Python-Markdown. c                óZ   >• S0 S/0U l          [        TU ]  " S0 UD6  0 U l        0 U l        g)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     €Ú:/usr/lib/python3/dist-packages/markdown/extensions/abbr.pyr   ÚAbbrExtension.__init__*   sA   ø€ ð Øð ðð
ˆŒð 	/Ü‰ÒÑ"˜6Ò"ØˆŒ
Øˆ�ó    c                ó¦   • U R                   R                  5         U R                  (       a&  U R                   R                  U R                  5        gg)z,Clear all previously defined abbreviations. N)r   Úclearr   Úupdate©r   s    r   ÚresetÚAbbrExtension.reset8   s4   € à�
‰
×ÑÔØ�M�MØ�J‰J×Ñ˜dŸm™mÕ,ð r   c                ó8   • U R                   R                  5         g)z+Clear all abbreviations from the glossary. N)r   r    r"   s    r   Úreset_glossaryÚAbbrExtension.reset_glossary>   s   € à�‰×ÑÕr   c                ó>   • U(       a  0 UEU R                   EU l         gg)z\Adds `dictionary` to our glossary. Any abbreviations that already exist will be overwritten.N)r   )r   Ú
dictionarys     r   Úload_glossaryÚAbbrExtension.load_glossaryB   s   € æØ;˜zÐ;¨T¯]©]Ð;ˆD�Mð r   c                óÊ  • U R                   S   S   (       a!  U R                  U R                   S   S   5        U R                  R                  U R                  5        UR                  U 5        UR                  R                  [        XR                  5      SS5        UR                  R                  R                  [        UR                  U R                  5      SS5        g)z5Insert `AbbrTreeprocessor` and `AbbrBlockprocessor`. r   r   Úabbré   é   N)r   r*   r   r!   r   ÚregisterExtensionÚtreeprocessorsÚregisterÚAbbrTreeprocessorÚparserÚblockprocessorsÚAbbrBlockprocessor)r   Úmds     r   ÚextendMarkdownÚAbbrExtension.extendMarkdownG   s£   € à�K‰K˜
Ñ# A×&Ø×Ñ˜tŸ{™{¨:Ñ6°qÑ9Ô:Ø�
‰
×Ñ˜$Ÿ-™-Ô(Ø
×Ñ˜TÔ"Ø
×Ñ×"Ñ"Ô#4°R¿¹Ó#DÀfÈaÔPØ
�	‰	×!Ñ!×*Ñ*Ô+=¸b¿i¹iÈÏÉÓ+TÐV\Ð^`Õar   )r   r   r   )r)   zdict[str, str])Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r#   r&   r*   r8   Ú__static_attributes__Ú__classcell__©r   s   @r   r   r   '   s&   ø† Ù7õò-òô<÷
bð br   r   c                  óL   ^ • \ rS rSrSrSSU 4S jjjrS	S
S jjrSS jrSrU =r	$ )r3   éQ   z2Replace abbreviation text with `<abbr>` elements. c                óJ   >• Ub  UO0 U l         S U l        [        TU ]  U5        g ©N)r   ÚREr   r   )r   r7   r   r   s      €r   r   ÚAbbrTreeprocessor.__init__T   s%   ø€ Ø$)Ñ$5™5¸2ˆŒ
Ø)-ˆŒÜ‰Ñ˜Õr   c           	     ó`  • [        U5       H  nU R                  X15        M     UR                  =n(       aï  [        [        U R                  R                  U5      5      5       H¸  nU R                  UR                  S5         (       d  M(  [        R                  " SSU R                  UR                  S5         05      n[        UR                  S5      5      Ul        XER                  5       S Ul        UR                  SU5        USUR                  5        nMº     XAl        UGb  UR                  (       aó  UR                  n[        U5      R                  U5      S-   n[        [        U R                  R                  U5      5      5       H’  n[        R                  " SSU R                  UR                  S5         05      n[        UR                  S5      5      Ul        XuR                  5       S Ul        UR                  X†5        USUR                  5        nM”     Xql        ggg)zVRecursively iterate over elements, run regex on text and wrap matches in `abbr` tags. r   r-   ÚtitleNr   )ÚreversedÚiter_elementÚtextÚlistrF   Úfinditerr   ÚgroupÚetreeÚElementr
   ÚendÚtailÚinsertÚstartÚindex)	r   ÚelÚparentÚchildrL   Úmr-   rS   rV   s	            r   rK   ÚAbbrTreeprocessor.iter_elementY   s   € ä˜b–\ˆEØ×Ñ˜eÖ(ñ "à—7‘7ˆ?ˆ4�?Üœd 4§7¡7×#3Ñ#3°DÓ#9Ó:Ö;�Ø—:‘:˜aŸg™g a›j×)Ñ)Ü Ÿ=š=¨°'¸4¿:¹:ÀaÇgÁgÈaÃjÑ;QÐ1RÓS�DÜ ,¨Q¯W©W°Q«ZÓ 8�D”IØ $§U¡U£W X �D”IØ—I‘I˜a Ô&Ø 
 §¡£Ð+’Dñ <ð ŒGØÒ "§'§'Ø—7‘7ˆDÜ˜“L×&Ñ& rÓ*¨QÑ.ˆEÜœd 4§7¡7×#3Ñ#3°DÓ#9Ó:Ö;�Ü—}’} V¨g°t·z±zÀ!Ç'Á'È!Ã*Ñ7MÐ-NÓO�Ü(¨¯©°«Ó4�”	Ø §¡£ ˜N�”	Ø—‘˜eÔ*Ø˜J˜QŸW™W›YÐ'’ñ <ð �Gð #*Ðr   c                ó"  • U R                   (       d  g[        U R                   R                  5       5      nUR                  [        SS9  [
        R                  " SSR                  S U 5       5       S35      U l        U R                  U5        g)z/Step through tree to find known abbreviations. NT)ÚkeyÚreversez\b(?:Ú|c              3  óN   #   • U  H  n[         R                  " U5      v •  M     g 7frE   )ÚreÚescape)Ú.0r]   s     r   Ú	<genexpr>Ú(AbbrTreeprocessor.run.<locals>.<genexpr>y   s   é € Ð/TÊ)À3´·	²	¸#·°Ê)ùs   ‚#%z)\b)
r   rM   ÚkeysÚsortÚlenra   ÚcompileÚjoinrF   rK   )r   ÚrootÚ	abbr_lists      r   ÚrunÚAbbrTreeprocessor.runq   si   € à�z�zàä˜Ÿ™Ÿ™Ó*Ó+ˆ	Ø�‰œ3¨ˆÑ-Ü—*’*˜v s§x¡xÑ/TÉ)Ó/TÓ'TÐ%VÐVZÐ[Ó\ˆŒà×Ñ˜$Õr   )rF   r   )NN)r7   zMarkdown | Noner   zdict | NonerE   )rW   úetree.ElementrX   úetree.Element | NoneÚreturnÚNone)rk   ro   rq   rp   )
r:   r;   r<   r=   r>   r   rK   rm   r?   r@   rA   s   @r   r3   r3   Q   s   ø† Ù=÷ñ ö
÷0
 ò 
 r   r3   c                  ó~   ^ • \ rS rSrSr\R                  " S\R                  5      rSU 4S jjr	S	S jr
S
S jrSrU =r$ )r6   é~   z(Parse text for abbreviation references. z7^[*]\[(?P<abbr>[^\\]*?)\][ ]?:[ ]*\n?[ ]*(?P<title>.*)$c                ó0   >• X l         [        TU ]	  U5        g rE   )r   r   r   )r   r4   r   r   s      €r   r   ÚAbbrBlockprocessor.__init__ƒ   s   ø€ Ø Œ
Ü‰Ñ˜Õ r   c                ó   • g)NTr   )r   rX   Úblocks      r   ÚtestÚAbbrBlockprocessor.test‡   s   € Ør   c                óò  • UR                  S5      nU R                  R                  U5      nU(       Ga1  UR                  S5      R	                  5       nUR                  S5      R	                  5       nU(       aì  U(       aå  US:X  d  US:X  a  U R
                  R                  U5        OX`R
                  U'   X4R                  5       S R	                  5       (       a1  UR                  SX4R                  5       S R                  S5      5        USUR                  5        R	                  5       (       a2  UR                  SUSUR                  5        R                  S5      5        gUR                  SU5        g	)
zu
Find and remove all abbreviation references from the text.
Each reference is added to the abbreviation collection.

r   r-   rI   z''z""NÚ
TF)ÚpoprF   ÚsearchrO   Ústripr   rR   rT   ÚlstriprU   Úrstrip)r   rX   Úblocksrx   rZ   r-   rI   s          r   rm   Ú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Õ(à',—J‘J˜tÑ$ØŸ™›˜�?×(Ñ(×*Ñ*à—M‘M ! U¯5©5«7¨8 _×%;Ñ%;¸DÓ%AÔBØ˜˜!Ÿ'™'›)Ð$×*Ñ*×,Ñ,à—M‘M ! U¨:¨A¯G©G«IÐ%6×%=Ñ%=¸dÓ%CÔDØà�‰�a˜ÔØr   )r   )r4   r   r   Údict)rX   ro   rx   Ústrrq   Úbool)rX   ro   r‚   z	list[str]rq   r†   )r:   r;   r<   r=   r>   ra   ri   Ú	MULTILINErF   r   ry   rm   r?   r@   rA   s   @r   r6   r6   ~   s2   ø† Ù3à	�ŠÐNÐPR×P\ÑP\Ó	]€B÷!ô÷ò r   r6   z4This class has been renamed to `AbbrBlockprocessor`.zJThis class will be removed in the future; use `AbbrTreeprocessor` instead.c                  ó:   ^ • \ rS rSrSrSU 4S jjrSS jrSrU =r$ )ÚAbbrInlineProcessoré©   zAbbreviation inline pattern. c                ó0   >• [         TU ]  U5        X l        g rE   )r   r   rI   )r   ÚpatternrI   r   s      €r   r   ÚAbbrInlineProcessor.__init__­   s   ø€ Ü‰Ñ˜Ô!Ø�
r   c                óè   • [         R                  " S5      n[        UR                  S5      5      Ul        UR                  SU R                  5        X1R                  S5      UR                  S5      4$ )Nr-   rI   r   )	rP   rQ   r
   rO   rL   ÚsetrI   rU   rR   )r   rZ   Údatar-   s       r   ÚhandleMatchÚAbbrInlineProcessor.handleMatch±   sQ   € Ü�}Š}˜VÓ$ˆÜ  §¡¨£Ó1ˆŒ	Ø�‰�˜$Ÿ*™*Ô%Ø—W‘W˜Q“Z §¡ q£Ð)Ð)r   )rI   )rŒ   r…   rI   r…   )rZ   zre.Match[str]r�   r…   rq   ztuple[etree.Element, int, int])	r:   r;   r<   r=   r>   r   r‘   r?   r@   rA   s   @r   r‰   r‰   ©   s   ø† á(÷÷*ò *r   r‰   c                 ó   • [        S0 U D6$ )Nr   )r   )r   s    r   ÚmakeExtensionr”   ¸   s   € ÜÑ"˜6Ñ"Ð"r   )r>   Ú
__future__r   Ú r   r5   r   Úinlinepatternsr   r1   r	   Úutilr
   r   Útypingr   ra   Úxml.etree.ElementTreerP   ÚElementTreer   Úblockparsersr   r   r3   r6   ÚAbbrPreprocessorr‰   r”   r   r   r   Ú<module>rž      s—   ðñ õ #å Ý ,Ý ,Ý *ß +Ý  Û 	ß %Ð %æÝÝ*ô'b�Iô 'bôT* ˜ô * ôZ%˜ô %ñP ÐTÔUÐVhÓiÐ ñ ÐXÓYô*˜/ó *ó Zð*ó#r   