Ë
    Ájæ+  ã            
      ó^  — d 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
mZ dd	lmZmZ erdd
lmZ ddlmZ ddlZddlmc mZ dZdZdZdZddddddddddœ	Zdez  Zdez  ZdZdZdez  Zd ez  Zd!Z d"ez  Z!d#Z"d$ez  Z#d%ez  Z$d&ez  Z%d'Z&d(Z'd)Z(ed*z   Z) G d+„ d,e«      Z* G d-„ d.e«      Z+d/„ Z,y)0z¨
Convert ASCII dashes, quotes and ellipses to their HTML entity equivalents.

See the [documentation](https://Python-Markdown.github.io/extensions/smarty)
for details.
é    )Úannotationsé   )Ú	Extensioné   )ÚHtmlInlineProcessorÚHTML_RE)ÚInlineProcessor)ÚRegistry)ÚTYPE_CHECKINGÚSequence)ÚMarkdown)ÚinlinepatternsNz)[!"#\$\%'()*+,-.\/:;<=>?\@\[\\\]\^_`{|}~]z[\s.,;:!?)]z[^\ \t\r\n\[\{\(\-\u0002\u0003]u1   (\s|&nbsp;|--|â€“|â€”|&[mn]dash;|&#8211;|&#8212;)z&mdash;z&ndash;z&hellip;z&laquo;z&raquo;z&lsquo;z&rsquo;z&ldquo;z&rdquo;)	ÚmdashÚndashÚellipsisúleft-angle-quoteúright-angle-quoteúleft-single-quoteúright-single-quoteúleft-double-quoteúright-double-quotez
^'(?=%s\B)z
^"(?=%s\B)z"'(?=\w)z'"(?=\w)z
(?<=%s)\'"z
(?<=%s)\"'z(?<!\w)'(?=\d{2}s)z	%s"(?=\w)z"(?=\s)z(?<=%s)"z	%s'(?=\w)z(?<=%s)'(?!\s|s\b|\d)z	'(\s|s\b)Ú'Ú"z(?!\>)c                  ó   — e Zd Zdd„Zdd„Zy)ÚSubstituteTextPatternc                óL   — t        j                  | |«       || _        || _        y)z" Replaces matches with some text. N)r   Ú__init__ÚreplaceÚmd)ÚselfÚpatternr   r   s       úM/var/www/html/venv/lib/python3.12/site-packages/markdown/extensions/smarty.pyr   zSubstituteTextPattern.__init__¥   s    € ä×$Ñ$ T¨7Ô3ØˆŒØˆ�ó    c                ó  — d}| j                   D ]O  }t        |t        «      r||j                  |«      z  }Œ(|| j                  j
                  j                  |«      z  }ŒQ ||j                  d«      |j                  d«      fS )NÚ r   )	r   Ú
isinstanceÚintÚgroupr   Ú	htmlStashÚstoreÚstartÚend)r    ÚmÚdataÚresultÚparts        r"   ÚhandleMatchz!SubstituteTextPattern.handleMatch«   so   € ØˆØ—L”LˆDÜ˜$¤Ô$Ø˜!Ÿ'™' $›-Ñ'‘à˜$Ÿ'™'×+Ñ+×1Ñ1°$Ó7Ñ7‘ð	 !ð
 �q—w‘w˜q“z 1§5¡5¨£8Ð+Ð+r#   N)r!   Ústrr   z#Sequence[int | str | etree.Element]r   r   )r-   zre.Match[str]r.   r2   Úreturnztuple[str, int, int])Ú__name__Ú
__module__Ú__qualname__r   r1   © r#   r"   r   r   ¤   s   „ óô,r#   r   c                  ó`   ‡ — e Zd ZdZˆ fd„Z	 	 	 	 	 	 	 	 d	d„Zd
d„Zd
d„Zd
d„Zd
d„Z	d„ Z
ˆ xZS )ÚSmartyExtensionz Add Smarty to Markdown. c                óÔ   •— ddgddgddgddgi dgdœ| _         	 t        ‰| �  di |¤Ž t        t        «      | _        | j                  j                  | j                  d	i ¬
«      «       y )NTzEducate quotesFzEducate angled quoteszEducate dasheszEducate ellipseszOverwrite default substitutions)Úsmart_quotesÚsmart_angled_quotesÚsmart_dashesÚsmart_ellipsesÚsubstitutionsr?   )Údefaultr7   )ÚconfigÚsuperr   Údictr?   ÚupdateÚ	getConfig)r    ÚkwargsÚ	__class__s     €r"   r   zSmartyExtension.__init__·   s|   ø€ à!Ð#3Ð4Ø$)Ð+BÐ#CØ!Ð#3Ð4Ø#Ð%7Ð8Ø Ð"CÐDñ
ˆŒð 	/Ü‰ÑÑ"˜6Ò"Ü-1´-Ó-@ˆÔØ×Ñ×!Ñ! $§.¡.°È" .Ó"MÕNr#   c                ó”   — t        |«      D ]:  \  }}||fz  }t        |Ž }d||fz  }| j                  j                  ||||z
  «       Œ< y )Nzsmarty-%s-%d)Ú	enumerater   ÚinlinePatternsÚregister)r    r   ÚpatternsÚserieÚpriorityÚindr!   Únames           r"   Ú_addPatternszSmartyExtension._addPatternsÄ   sW   € ô & hÖ/‰LˆC�Ø˜�uÑˆGÜ+¨WÐ5ˆGØ! U¨C LÑ0ˆDØ×Ñ×(Ñ(¨°$¸À¹ÕEñ	 0r#   c                óä   — t        d| j                  d   f|«      }t        d| j                  d   f|«      }| j                  j                  |dd«       | j                  j                  |dd«       y )	Nz(?<!-)---(?!-)r   z(?<!-)--(?!-)r   zsmarty-em-dashesé2   zsmarty-en-dashesé-   ©r   r?   rJ   rK   )r    r   ÚemDashesPatternÚenDashesPatterns       r"   ÚeducateDasheszSmartyExtension.educateDashesÑ   sv   € Ü/Ø × 2Ñ 2°7Ñ ;Ð=¸ró
ˆô 0Ø˜t×1Ñ1°'Ñ:Ð<¸bó
ˆð 	×Ñ×$Ñ$ _Ð6HÈ"ÔMØ×Ñ×$Ñ$ _Ð6HÈ"ÕMr#   c                ót   — t        d| j                  d   f|«      }| j                  j                  |dd«       y )Nz(?<!\.)\.{3}(?!\.)r   zsmarty-ellipsesé
   rU   )r    r   ÚellipsesPatterns      r"   ÚeducateEllipseszSmartyExtension.educateEllipsesÛ   s<   € Ü/Ø! D×$6Ñ$6°zÑ$BÐ#DÀbó
ˆð 	×Ñ×$Ñ$ _Ð6GÈÕLr#   c                óä   — t        d| j                  d   f|«      }t        d| j                  d   f|«      }| j                  j                  |dd«       | j                  j                  |dd«       y )	Nz\<\<r   z\>\>r   zsmarty-left-angle-quotesé(   zsmarty-right-angle-quotesé#   rU   )r    r   ÚleftAngledQuotePatternÚrightAngledQuotePatterns       r"   ÚeducateAngledQuotesz#SmartyExtension.educateAngledQuotesá   s~   € Ü!6Ø�d×(Ñ(Ð);Ñ<Ð>Àó"
Ðô #8Ø�d×(Ñ(Ð)<Ñ=Ð?Àó#
Ðð 	×Ñ×$Ñ$Ð%;Ð=WÐY[Ô\Ø×Ñ×$Ñ$Ð%<Ð>YÐ[]Õ^r#   c                ó¶  — | j                   d   }| j                   d   }| j                   d   }| j                   d   }t        |fft        |fft        ||z   fft        ||z   fft
        ||z   fft        ||z   fft        |fft        d|fft        |fft        |dfft        |fft        d|fft        |fft        |fft        |fff}| j!                  ||dd«       y )Nr   r   r   r   r   Úquotesé   )r?   ÚsingleQuoteStartReÚdoubleQuoteStartReÚdoubleQuoteSetsReÚsingleQuoteSetsReÚdoubleQuoteSetsRe2ÚsingleQuoteSetsRe2ÚdecadeAbbrReÚopeningSingleQuotesRegexÚclosingSingleQuotesRegexÚclosingSingleQuotesRegex2ÚremainingSingleQuotesRegexÚopeningDoubleQuotesRegexÚclosingDoubleQuotesRegexÚclosingDoubleQuotesRegex2ÚremainingDoubleQuotesRegexrQ   )r    r   ÚlsquoÚrsquoÚldquoÚrdquorL   s          r"   ÚeducateQuoteszSmartyExtension.educateQuotesë   s  € Ø×"Ñ"Ð#6Ñ7ˆØ×"Ñ"Ð#7Ñ8ˆØ×"Ñ"Ð#6Ñ7ˆØ×"Ñ"Ð#7Ñ8ˆä % Ð*Ü % Ð*Ü ¨¡Ð 0Ð1Ü ¨¡Ð 0Ð1Ü %¨%¡-Ð!1Ð2Ü %¨%¡-Ð!1Ð2Ü˜E˜8Ð$Ü%¨¨5 zÐ2Ü%¨ xÐ0Ü&¨°¨
Ð3Ü'¨%¨Ð2Ü%¨¨5 zÐ2Ü%¨ xÐ0Ü&¨¨Ð1Ü'¨%¨Ð2ð
ˆð" 	×Ñ˜"˜h¨°"Õ5r#   c                óô  — | j                  «       }t        «       | _        |d   r| j                  |«       |d   r| j	                  |«       |d   r<| j                  |«       |j                  j                  t        t        |«      dd«       |d   r| j                  |«       t        |«      }| j                  |_        |j                  j                  |dd«       |j                  j                  d	d
g«       y )Nr>   r;   r<   ÚhtmléZ   r=   Úsmartyé   r   r   )Ú
getConfigsr
   rJ   r\   ry   rb   rK   r   ÚHTML_STRICT_RErX   r	   ÚtreeprocessorsÚESCAPED_CHARSÚextend)r    r   ÚconfigsÚinlineProcessors       r"   ÚextendMarkdownzSmartyExtension.extendMarkdown  sÞ   € Ø—/‘/Ó#ˆÜHPË
ˆÔØÐ#Ò$Ø× Ñ  Ô$Ø�>Ò"Ø×Ñ˜rÔ"ØÐ(Ò)Ø×$Ñ$ RÔ(ð ×Ñ×&Ñ&Ô':¼>È2Ó'NÐPVÐXZÔ[Ø�>Ò"Ø×Ñ˜rÔ"Ü)¨"Ó-ˆØ)-×)<Ñ)<ˆÔ&Ø
×Ñ×"Ñ" ?°H¸aÔ@Ø
×Ñ×Ñ  c 
Õ+r#   )r   r   rL   z9Sequence[tuple[str, Sequence[int | str | etree.Element]]]rM   r2   rN   r'   )r   r   r3   ÚNone)r4   r5   r6   Ú__doc__r   rQ   rX   r\   rb   ry   r†   Ú__classcell__)rG   s   @r"   r9   r9   µ   sY   ø„ Ù#ôOðFàðFð LðFð ð	Fð
 óFóNóMó_ó6ö0,r#   r9   c                 ó   — t        di | ¤ŽS )Nr7   )r9   )rF   s    r"   ÚmakeExtensionr‹     s   € ÜÑ$˜VÑ$Ð$r#   )-rˆ   Ú
__future__r   r%   r   r   r   r   r�   r	   Úutilr
   Útypingr   r   Úmarkdownr   ÚreÚxml.etree.ElementTreeÚetreeÚElementTreeÚ
punctClassÚendOfWordClassÚ
closeClassÚopeningQuotesBaser?   rf   rg   rh   ri   rj   rk   rl   rq   rr   rs   rm   rn   ro   rp   rt   r€   r   r9   r‹   r7   r#   r"   Ú<module>r˜      s.  ðñ^õ #å ß 9Ý ,Ý ß *áÝ!Ý!Ûß)Ð)ð >€
Ø€Ø/€
ð	ð ð ØØØ!Ø"Ø"Ø#Ø"Ø#ñ
€ð # ZÑ/Ð Ø" ZÑ/Ð ð $Ð Ø#Ð Ø" ZÑ/Ð Ø" ZÑ/Ð ð %€ð (Ð*;Ñ;Ð ð &Ð Ø'¨*Ñ4Ð ð (Ð*;Ñ;Ð ð 4°jÑ@Ð Ø(Ð ð "Ð Ø!Ð à˜9Ñ$€ô,Ð/ô ,ô"_,�iô _,óD%r#   