
    $g(+              
      X   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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*dS ).z
Adds conversion of 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(?<!\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dS )SubstituteTextPatternpatternstrreplace#Sequence[int | str | etree.Element]mdr   c                L    t          j        | |           || _        || _        dS )z" Replaces matches with some text. N)r   __init__r   r    )selfr   r   r    s       Z/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/markdown/extensions/smarty.pyr"   zSubstituteTextPattern.__init__   s'    $T7333    mre.Match[str]datareturntuple[str, int, int]c                   d}| j         D ]R}t          |t                    r||                    |          z  }0|| j        j                            |          z  }S||                    d          |                    d          fS )N r   )	r   
isinstanceintgroupr    	htmlStashstorestartend)r#   r&   r(   resultparts        r$   handleMatchz!SubstituteTextPattern.handleMatch   s    L 	8 	8D$$$ 8!''$--'$'+11$777qwwqzz15588++r%   N)r   r   r   r   r    r   )r&   r'   r(   r   r)   r*   )__name__
__module____qualname__r"   r6    r%   r$   r   r      s<           , , , , , ,r%   r   c                  P     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                      j        di | t          t                    | _        | j                            |                     d	i 
                     d S )NTzEducate quotesFzEducate angled quoteszEducate dasheszEducate ellipseszOverwrite default substitutions)smart_quotessmart_angled_quotessmart_dashessmart_ellipsessubstitutionsrB   )defaultr:   )configsuperr"   dictrB   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"MNNNNNr%   r    r   patterns9Sequence[tuple[str, Sequence[int | str | etree.Element]]]serier   priorityr.   c                    t          |          D ]:\  }}||fz  }t          | }d||fz  }| j                            ||||z
             ;d S )Nzsmarty-%s-%d)	enumerater   inlinePatternsregister)r#   r    rK   rM   rN   indr   names           r$   _addPatternszSmartyExtension._addPatterns   ss     &h// 	F 	FLCuG+W5G!UCL0D(($EEEE		F 	Fr%   r)   Nonec                    t          d| j        d         f|          }t          d| j        d         f|          }| j                            |dd           | j                            |dd           d S )	Nz(?<!-)---(?!-)r   z(?<!-)--(?!-)r   zsmarty-em-dashes2   zsmarty-en-dashes-   r   rB   rQ   rR   )r#   r    emDashesPatternenDashesPatterns       r$   educateDasheszSmartyExtension.educateDashes   s    / 27 ;=r
 
 0t1':<b
 
 	$$_6H"MMM$$_6H"MMMMMr%   c                x    t          d| j        d         f|          }| j                            |dd           d S )Nz(?<!\.)\.{3}(?!\.)r   zsmarty-ellipses
   rZ   )r#   r    ellipsesPatterns      r$   educateEllipseszSmartyExtension.educateEllipses   sG    /!D$6z$B#Db
 
 	$$_6GLLLLLr%   c                    t          d| j        d         f|          }t          d| j        d         f|          }| j                            |dd           | j                            |dd           d S )	Nz\<\<r   z\>\>r   zsmarty-left-angle-quotes(   zsmarty-right-angle-quotes#   rZ   )r#   r    leftAngledQuotePatternrightAngledQuotePatterns       r$   educateAngledQuotesz#SmartyExtension.educateAngledQuotes   s    !6d();<>"
 "
 #8d()<=?#
 #
 	$$%;=WY[\\\$$%<>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
          |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}|                     ||dd           d S )Nr   r   r   r   r   quotes   )rB   singleQuoteStartRedoubleQuoteStartRedoubleQuoteSetsResingleQuoteSetsRedecadeAbbrReopeningSingleQuotesRegexclosingSingleQuotesRegexclosingSingleQuotesRegex2remainingSingleQuotesRegexopeningDoubleQuotesRegexclosingDoubleQuotesRegexclosingDoubleQuotesRegex2remainingDoubleQuotesRegexrU   )r#   r    lsquorsquoldquordquorK   s          r$   educateQuoteszSmartyExtension.educateQuotes   s    "#67"#78"#67"#78%*%* 01 01E8$%5z2%x0&
3'%2%5z2%x0&1'%2
 	"h"55555r%   c                @   |                                  }t                      | _        |d         r|                     |           |d         r|                     |           |d         rD|                     |           |j                            t          t          |          dd           |d         r| 	                    |           t          |          }| j        |_        |j                            |dd           |j                            d	d
g           d S )NrA   r>   r?   htmlZ   r@   smarty   r   r   )
getConfigsr
   rQ   ra   r|   rg   rR   r   HTML_STRICT_REr]   r	   treeprocessorsESCAPED_CHARSextend)r#   r    configsinlineProcessors       r$   extendMarkdownzSmartyExtension.extendMarkdown   s"   //##HP

#$ 	%  $$$>" 	#r"""() 	\$$R((( &&':>2'N'NPVXZ[[[>" 	#r""")"--)-)<&
""?Ha@@@
c
+++++r%   )r    r   rK   rL   rM   r   rN   r.   )r    r   r)   rV   )r7   r8   r9   __doc__r"   rU   r]   ra   rg   r|   r   __classcell__)rJ   s   @r$   r<   r<      s        ##O O O O OF F F FN N N NM M M M_ _ _ _6 6 6 6,, , , , , , ,r%   r<   c                     t          di | S )Nr:   )r<   )rI   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openingQuotesBaserB   rk   rl   rm   rn   ro   rt   ru   rv   rp   rq   rr   rs   rw   r   r   r<   r   r:   r%   r$   <module>r      s  ^  # " " " " "       9 9 9 9 9 9 9 9 , , , , , ,       * * * * * * * * *!!!!!!!!!!!!III))))))))) >
/
	  !""#"#
 
 #Z/ "Z/  $ #  % (*;;  & &3  (*;;  4j@ (  " ! 9$, , , , ,/ , , ,"], ], ], ], ],i ], ], ],@% % % % %r%   