ó
    Ð]j"  ã                  óˆ  • S r SSKJr  SSKrSSKJr  SSKJr  SSKrSSKJr  S'S jr	S(S	 jr
\" S
5      r        S)S jrS*S jrS+S jr\R                  " S\R                   5      r\R                  " S5      r\R                  " S\R                   5      rS,S jrS-S jrSr\R                  " S\-   S-   5      rS-S jrS.S jr\R                  " S5      rS-S jrS/S jrS0S jr1 SkrS1S jrS2S jr 1 Skr!S3S  jr"S-S! jr#\R                  " S"\R                   S#9r$\R                  " S$\R                   S#9r%S4S% jr&S4S& jr'g)5z!Utilities for parsing source texté    )ÚannotationsN)ÚMatch)ÚTypeVaré   )Úentitiesc                ó>   •  [        X   5      $ ! [         a     gf = f©zö
Returns the Unicode value of the character at the specified location.

@param - index The zero-based index of the desired character.
If there is no character at the specified index, NaN is returned.

This was added for compatibility with python
N)ÚordÚ
IndexError©ÚsrcÚposs     ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/markdown_it/common/utils.pyÚ
charCodeAtr      s%   € ðÜ�3‘8‹}ÐøÜó Ùðús   ‚ �
›c                ó,   •  X   $ ! [          a     gf = fr	   )r   r   s     r   Ú	charStrAtr      s    € ðØ‰xˆøÜó Ùðús   ‚ †
’Ú_ItemTVc                ó"   • U SU U-   XS-   S -   $ )zk
Remove element from array and put another array at those position.
Useful for some operations with tokens
Nr   © )r   r   ÚnewElementss      r   ÚarrayReplaceAtr   .   s"   € ð ˆt�ˆ9�{Ñ" S¨q©¨ ^Ñ3Ð3ó    c                óÄ   • U S:¼  a  U S::  a  gU S:¼  a  U S::  a  gU S-  S:X  d	  U S-  S:X  a  gU S:¼  a  U S	::  a  gU S
:X  a  gU S:¼  a  U S::  a  gU S:¼  a  U S::  a  gU S:”  + $ )Ni Ø  iÿß  FiÐý  iïý  iÿÿ  iþÿ  r   é   é   é   é   é   éŸ   iÿÿ r   ©Úcs    r   ÚisValidEntityCoder"   8   s�   € àˆFƒ{�q˜F“{ØàˆFƒ{�q˜F“{ØØ	
ˆV‰˜Ó Q¨¡Z°FÓ$:ØàˆDƒy�Q˜$“YØØˆDƒyØØˆDƒy�Q˜$“YØØˆDƒy�Q˜$“YØà�HÒÐr   c                ó   • [        U 5      $ )zËConvert ordinal to unicode.

Note, in the original Javascript two string characters were required,
for codepoints larger than `0xFFFF`.
But Python 3 can represent any unicode codepoint in one character.
)Úchrr    s    r   ÚfromCodePointr%   N   s   € ô ˆq‹6€Mr   zD\\([!"#$%&\'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])|&([a-z#][a-z0-9]{1,31});z#([0-9]{1,8})z#x([a-f0-9]{1,8})c                óJ  • U[         ;   a	  [         U   $ Sn[        R                  U5      =n(       a  [        UR	                  S5      S5      nO7[
        R                  U5      =n(       a  [        UR	                  S5      S5      nUb  [        U5      (       a  [        U5      $ U $ )zVConvert HTML entity patterns,
see https://spec.commonmark.org/0.30/#entity-references
Nr   é
   é   )r   ÚDIGITAL_ENTITY_BASE10_REÚ	fullmatchÚintÚgroupÚDIGITAL_ENTITY_BASE16_REr"   r%   )ÚmatchÚnameÚcodeÚpats       r   ÚreplaceEntityPatternr2   b   s�   € ð ŒxÓÜ˜‰~Ðà€DÜ&×0Ñ0°Ó6Ð6€sÕ6Ü�3—9‘9˜Q“< Ó$‰Ü(×2Ñ2°4Ó8Ð	8ˆÕ	8Ü�3—9‘9˜Q“< Ó$ˆàÑÔ-¨d×3Ñ3Ü˜TÓ"Ð"à€Lr   c                óR   • SS jnSU ;  a  SU ;  a  U $ [         R                  X5      $ )Nc                óŒ   • U R                  S5      nU(       a  U$ U R                  S5      n[        U R                  5       U5      $ )Nr   é   )r,   r2   )r.   ÚescapedÚentitys      r   Úreplacer_funcÚ"unescapeAll.<locals>.replacer_funcv   s7   € Ø—+‘+˜a“.ˆÞØˆNØ—‘˜Q“ˆÜ# E§K¡K£M°6Ó:Ð:r   Ú\Ú&)r.   z
Match[str]ÚreturnÚstr)ÚUNESCAPE_ALL_REÚsub)Ústringr8   s     r   ÚunescapeAllrA   u   s.   € ô;ð �6Ó˜c¨Ó/ØˆÜ×Ñ˜}Ó5Ð5r   z#\\!"#$%&'()*+,./:;<=>?@\[\]^`{}|_~-z\\([z])c                ó.   • [         R                  SU 5      $ )zStrip escape \ charactersz\1)ÚESCAPE_CHARr?   ©r@   s    r   ÚstripEscaperE   †   s   € ä�?‰?˜5 &Ó)Ð)r   c                ó–   • U R                  SS5      n U R                  SS5      n U R                  SS5      n U R                  SS5      n U $ )	zHReplace special characters "&", "<", ">" and '"' to HTML-safe sequences.r;   z&amp;Ú<z&lt;Ú>z&gt;Ú"z&quot;)Úreplace)Úraws    r   Ú
escapeHtmlrL   ‹   sI   € ð �+‰+�c˜7Ó
#€CØ
�+‰+�c˜6Ó
"€CØ
�+‰+�c˜6Ó
"€CØ
�+‰+�c˜8Ó
$€CØ€Jr   z[.?*+^$[\]\\(){}|-]c                ó2   • [         R                  SU 5      n U $ )Nz\$&)ÚREGEXP_ESCAPE_REr?   rD   s    r   ÚescapeRErO   š   s   € Ü×!Ñ! &¨&Ó1€FØ€Mr   c                ó   • U S;   $ )z(Check if character code is a whitespace.)é	   é    r   ©r0   s    r   ÚisSpacerT   ¢   s   € à�<ÑÐr   c                ó   • U S;   $ )z#Check if character is a whitespace.)Ú	Ú r   ©Úchs    r   Ú
isStrSpacerZ   §   s   € à�ÑÐr   >   é 0  rQ   r'   r   é   é   rR   é/   é_   é€  é    c                ó.   • U S:¼  a  U S::  a  gU [         ;   $ )z"Zs (unicode class) || [\t\f\v\r\n]i    i
   T)ÚMD_WHITESPACErS   s    r   ÚisWhiteSpacerd   »   s   € àˆvƒ~˜$ &›.ØØ”=Ñ Ð r   c                óL   • [         R                  " U 5      R                  S5      $ )z.Check if character is a punctuation character.)ÚPÚS)ÚunicodedataÚcategoryÚ
startswithrX   s    r   ÚisPunctCharrk   Å   s   € ä×Ò Ó#×.Ñ.¨zÓ:Ð:r   >    é!   é"   é#   é$   é%   é&   é'   é(   é)   é*   é+   é,   é-   é.   é/   é:   é;   é<   é=   é>   é?   é@   é[   é\   é]   é^   é_   é`   é{   é|   é}   é~   c                ó   • U [         ;   $ )a%  Markdown ASCII punctuation characters.

::

    !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, or ~

See http://spec.commonmark.org/0.15/#ascii-punctuation-character

Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.

)ÚMD_ASCII_PUNCTrX   s    r   ÚisMdAsciiPunctrŽ   î   s   € ð ”ÑÐr   c                óŠ   • [         R                  " SSU R                  5       5      n U R                  5       R	                  5       $ )z#Helper to unify [reference labels].z\s+rW   )Úrer?   ÚstripÚlowerÚupperrD   s    r   ÚnormalizeReferencer”   ý   s4   € ô �VŠV�F˜C §¡£Ó0€FðX �<‰<‹>×ÑÓ!Ð!r   z^<a[>\s])Úflagsz^</a\s*>c                ó>   • [        [        R                  U 5      5      $ ©N)ÚboolÚLINK_OPEN_REÚsearchrD   s    r   Ú
isLinkOpenr›   4  s   € Ü”×#Ñ# FÓ+Ó,Ð,r   c                ó>   • [        [        R                  U 5      5      $ r—   )r˜   ÚLINK_CLOSE_RErš   rD   s    r   ÚisLinkCloserž   8  s   € Ü”×$Ñ$ VÓ,Ó-Ð-r   )r   r=   r   r+   r<   ú
int | None)r   r=   r   r+   r<   ú
str | None)r   úlist[_ItemTV]r   r+   r   r¡   r<   r¡   )r!   r+   r<   r˜   )r!   r+   r<   r=   )r.   r=   r/   r=   r<   r=   )r@   r=   r<   r=   )rK   r=   r<   r=   )r0   rŸ   r<   r˜   )rY   r    r<   r˜   )r0   r+   r<   r˜   )rY   r=   r<   r˜   )rY   r+   r<   r˜   )r@   r=   r<   r˜   )(Ú__doc__Ú
__future__r   r�   r   Útypingr   rh   r   r   r   r   r   r"   r%   ÚcompileÚ
IGNORECASEr>   r)   r-   r2   rA   Ú	ESCAPABLErC   rE   rL   rN   rO   rT   rZ   rc   rd   rk   r�   rŽ   r”   r™   r�   r›   rž   r   r   r   Ú<module>r¨      sM  ðÙ 'å "ã 	Ý Ý Û å ôôñ �)Ó
€ð4Ø	ð4Ø ð4Ø/<ð4àô4ôô,ð —*’*ØVØ‡M�Mó€ð Ÿ:š:Ð&6Ó7Ð ØŸ:š:Ð&:¸B¿M¹MÓJÐ ôô&
6ð 7€	Ø�jŠj˜ 9Ñ,¨uÑ4Ó5€ô*ô
ð —:’:Ð4Ó5Ð ôô ô
ò
€ô!ô;ò
!€ôH ô0"ðf �zŠz˜+¨R¯]©]Ñ;€Ø—
’
˜;¨b¯m©mÑ<€ô-õ.r   