
    $g                        d Z ddlmZ ddlmZ ddlmZ ddlmc m	Z ddl
Z
d                    ej         ed          ej                  ZdZd	Z G d
 de          Zd ZddZddZ G d de          Z G d de          Zd ZdS )a(  
Inline Highlighting.

pymdownx.inlinehilite

An alternative inline code extension that highlights code.  Can
use CodeHilite to source its settings or pymdownx.highlight.

`:::javascript var test = 0;`

- or -

`#!javascript var test = 0;`

Copyright 2014 - 2017 Isaac Muse <isaacmuse@gmail.com>
    )	Extension)InlineProcessor)utilNz{}{}{}\z\\a  (?x)
(?:
(?<!\\)(?P<escapes>(?:\\{2})+)(?=`+) |  # Process code escapes before code
(?<!\\)(?P<tic>`+)
((?:\:{3,}|\#!)(?P<lang>[\w#.+-]*)\s+)? # Optional language
(?P<code>.+?)                           # Code
(?<!`)(?P=tic)(?!`)                     # Closing
)
c                       e Zd ZdZdS )InlineHiliteExceptionzInlineHilite exception.N)__name__
__module____qualname____doc__     U/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/pymdownx/inlinehilite.pyr   r   %   s        !!!!r   r   c                     |                      dd          } |                      dd          } |                      dd          } | S )zBasic html escaping.&z&amp;<z&lt;>z&gt;)replace)txts    r   _escaper   )   sB     ++c7
#
#C
++c6
"
"C
++c6
"
"CJr   c                 "    |du p|dk    p| |k    S )zTest language.N*r   )languagetest_languages     r   _testr   2   s#     D UMS$8UH<UUr    c                      || |||          S )zFormatter wrapper.r   )srcr   md
class_namefmts        r   
_formatterr"   8   s     3sHj"---r   c                   8    e Zd ZdZd Zd Zd Zd
dZd Zd	 Z	dS )InlineHilitePatternz Handle the inline code patterns.c           	         || _         t          j        | ||           || _        dt          | j        dg| _        | j                             dg           }|D ]{}|                    d          }|                    d          }|                    d| j                  }|2|0|                     |t          j
        t          ||                     |d	| _        dS )
Initialize.inlinehilitenametest	formattercustom_inliner)   classformatN)r    r!   F)configr   __init__r   r   highlight_code
formattersgetextend_custom_inline	functoolspartialr"   get_hl_settings)	selfpatternr/   r   r,   customr)   r    inline_formats	            r   r0   zInlineHilitePattern.__init__A   s      w333 '!0 
 <<# 	 	F::f%%DG,,J"JJx1DEEMJ$:))%jZ][[[  
  %r   c                     |t          j        t          |          |d}|dk    r|| j        d<   dS | j                            |           dS )z@Extend SuperFences with the given name, language, and formatter.)r   r(   r   r   N)r5   r6   r   r2   append)r8   r)   r+   objs       r   r4   z(InlineHilitePattern.extend_custom_inline^   sb     %e4@@@"
 
 3;;!$DOAO""3'''''r   c                    | j         sd| _         | j        d         | _        d}d| _        | j        j        D ]A}	 |                                }|                                | _         n# t          $ r Y >w xY w| j        d         }|r|n|d         | _	        |
                    dd          | _        |d         | _        |d         | _        |d         | _        |d	         | _        |d
         | _        |d         | _        dS dS )z'Check for Highlight extension settings.Tstyle_plain_textN	css_classextend_pygments_lang
guess_langpygments_styleuse_pygments	noclasseslanguage_prefixpygments_lang_class)r7   r/   r@   highlighterr   registeredExtensionsget_pymdownx_highlight_settingsget_pymdownx_highlighterAttributeErrorrA   r3   rB   rC   rD   rE   rF   rG   rH   )r8   r/   extrA   s       r   get_settingsz InlineHilitePattern.get_settingsl   s3    # 	E#'D $(K0B$CD!F#Dw3   @@BBF'*'C'C'E'ED$E%   D K0I*3LYY9LDN(.

3I4(P(PD%$\2DO"()9":D &~ 6D#K0DN#)*;#<D '-.C'DD$$$/	E 	Es   -A((
A54A5r   Nc           
         | j         p|p| j        }t          | j         t                    r| j         nd}|r|                     | j        | j        | j        | j        | j        | j	        | j
        |                              ||| j        d          }| j        j                            |j                  |_        nEt#          j        d          }| j        j                            t'          |                    |_        |S )z'Syntax highlight the inline code block.r   )rC   rD   rE   rF   rB   rG   rH   default_langT)inlinecode)r@   rC   
isinstancestrrI   rD   rE   rF   rB   rG   rH   	highlightrA   r   	htmlStashstoretextetreeElementr   )r8   r   r   	classnamer   process_textrQ   els           r   r1   z"InlineHilitePattern.highlight_code   s     ,KKDO0:4;PRU0V0V^t,,\^ 	<!!?#2!..%)%> $ 4$($<) " 	 	 iXt~diCC  g'--bg66BGGv&&Bg'--gcll;;BG	r   c                     t          | j                  D ]d} |d         |          rQ |d         ||| j                  }t          |t                    r| j        j                            |          }|c S edS )zHandle code block.r*   r+   )r   r   r   N)reversedr2   r   rT   rU   rW   rX   )r8   langr   entryvalues        r   handle_codezInlineHilitePattern.handle_code   s     do.. 		 		EuV}T"" *k*!w  
 eS)) ; G-33E::E		 		r   c                    |                     d          r\|                     d                              t          t                    |                    d          |                    d          fS |                     d          r|                     d          nd}|                     d                                          }|                                  	 |                     ||          |                    d          |                    d          fS # t          $ r  t          $ r |                     d          ddfcY S w xY w)zHandle the pattern match.escapesr   ra   r   rS   N)groupr   DOUBLE_BSLASHESCAPED_BSLASHstartendstriprO   rd   r   	Exception)r8   mdatara   r   s        r   handleMatchzInlineHilitePattern.handleMatch   s.    779 	.779%%--m^LLaggVWjjZ[Z_Z_`aZbZbbb&'ggfoo=1776???2D''&//''))C.''c22AGGAJJaHH(    . . .wwqzz4----.s   >D ,EE)r   r   NN)
r	   r
   r   r   r0   r4   rO   r1   rd   rp   r   r   r   r$   r$   >   s|        **% % %:( ( (E E E8   .  . . . . .r   r$   c                   (     e Zd ZdZ fdZd Z xZS )InlineHiliteExtensionz4Add inline highlighting extension to Markdown class.c                 j    g | _         ddgddgg dgd| _         t                      j        |i | dS )r&   r   aD  Process inline code even when a language is not specified. When 'False', no classes will be added to code blocks without shebangs and no scoping will performed. The content will just be escaped.If a language string is provided, then that language will be assumed for any inline code block without a shebang. - Default: Falser   ziSet class name for wrapper element. The default of Highlight will be usedif nothing is set. - Default: ''zCustom inline - default [])r@   rA   r,   N)r'   r/   superr0   )r8   argskwargs	__class__s      r   r0   zInlineHiliteExtension.__init__   sh      #!  !">?!
 
$ 	$)&)))))r   c                     |                                  }|j                            t          t          ||          dd           |                    dgdddii           dS )zFAdd support for `:::language code` and `#!language code` highlighting.backtick   zpymdownx.highlight_enabledFN)
getConfigsinlinePatternsregisterr$   BACKTICK_CODE_REregisterExtensions)r8   r   r/   s      r   extendMarkdownz$InlineHiliteExtension.extendMarkdown   sk     ""
""#67GQS#T#TV`befff
347KjZ_M`6abbbbbr   )r	   r
   r   r   r0   r   __classcell__)rw   s   @r   rr   rr      sT        >>* * * * *0c c c c c c cr   rr   c                      t          | i |S )zReturn extension.)rr   )ru   rv   s     r   makeExtensionr      s     !$1&111r   )N)r   r   Nr   N)r   markdownr   markdown.inlinepatternsr   r   md_utilxml.etree.ElementTreerZ   ElementTreer5   r.   STXordETXri   rh   r   rm   r   r   r   r"   r$   rr   r   r   r   r   <module>r      s   "       3 3 3 3 3 3 $ $ $ $ $ $ % % % % % % % % %    cc$iiEE " " " " "I " " "  V V V V. . . .}. }. }. }. }./ }. }. }.@ c  c  c  c  cI  c  c  cF2 2 2 2 2r   