
    ei                        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j                  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y)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y)InlineHiliteExceptionzInlineHilite exception.N)__name__
__module____qualname____doc__     W/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/pymdownx/inlinehilite.pyr   r   %   s    !r   r   c                 r    | j                  dd      } | j                  dd      } | j                  dd      } | S )zBasic html escaping.&z&amp;<z&lt;>z&gt;)replace)txts    r   _escaper   )   s9     ++c7
#C
++c6
"C
++c6
"CJr   c                 &    |du xs |dk(  xs | |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     sHj"--r   c                   6    e Zd ZdZd Zd Zd Zd	dZd Zd Z	y)
InlineHilitePatternz Handle the inline code patterns.c           	         || _         t        j                  | ||       || _        dt        | j
                  dg| _        | j                   j                  dg       }|D ]r  }|j                  d      }|j                  d      }|j                  d| j
                        }|D|G| j                  |t        j                  t        ||             t d	| _        y)
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   r/   zInlineHilitePattern.__init__A   s       w3 '!00
 <# 	F::f%DG,J"JJx1D1DEMJ$:))%%jZ][	  %r   c                     |t        j                  t        |      |d}|dk(  r|| j                  d<   y| j                  j	                  |       y)z@Extend SuperFences with the given name, language, and formatter.)r   r'   r   r   N)r4   r5   r   r1   append)r7   r(   r*   objs       r   r3   z(InlineHilitePattern.extend_custom_inline^   sJ     %%e4@"
 3;!$DOOAOO""3'r   c                    | j                   sd| _         | j                  d   | _        d}d| _        | j                  j
                  D ])  }	 |j                         }|j                         | _         n | j                  d   }|r|n|d   | _	        |j                  dd      | _        |d   | _        |d   | _        |d   | _        |d	   | _        |d
   | _        |d   | _        yy# t        $ r Y w xY w)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)r6   r.   r?   highlighterr   registeredExtensionsget_pymdownx_highlight_settingsget_pymdownx_highlighterAttributeErrorr@   r2   rA   rB   rC   rD   rE   rF   rG   )r7   r.   extr@   s       r   get_settingsz InlineHilitePattern.get_settingsl   s    ###'D $(KK0B$CD!F#Dww33  @@BF'*'C'C'ED$	 K0I*3Y9LDN(.

3I4(PD%$\2DO"()9":D &~ 6D#K0DN#)*;#<D '-.C'DD$/ $ & s   %C%%	C10C1Nc           
         | j                   xs |xs | j                  }t        | j                   t              r| j                   nd}|r| j	                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  |      j                  ||| j                  d      }| j                  j                  j                  |j                         |_        |S t#        j$                  d      }| j                  j                  j                  t'        |            |_        |S )z'Syntax highlight the inline code block. )rB   rC   rD   rE   rA   rF   rG   default_langT)inlinecode)r?   rB   
isinstancestrrH   rC   rD   rE   rA   rF   rG   	highlightr@   r   	htmlStashstoretextetreeElementr   )r7   r   r   	classnamer   process_textrQ   els           r   r0   z"InlineHilitePattern.highlight_code   s
    ,,KKDOO0:4;P;PRU0Vt,,\^!!??#22!....%)%>%> $ 4 4$($<$<) " 	 iXt~~diC  gg''--bgg6BG 	 v&Bgg''--gcl;BG	r   c                     t        | j                        D ]^  } |d   |      s |d   ||| j                        }t        |t              r%| j                  j
                  j                  |      }|c S  y)zHandle code block.r)   r*   )r   r   r   N)reversedr1   r   rT   rU   rW   rX   )r7   langr   entryvalues        r   handle_codezInlineHilitePattern.handle_code   ss     doo. 		EuV}T"*k*!ww
 eS) GG--33E:E		r   c                    |j                  d      rJ|j                  d      j                  t        t              |j	                  d      |j                  d      fS |j                  d      r|j                  d      nd}|j                  d      j                         }| j                          	 | j                  ||      |j	                  d      |j                  d      fS # t        $ r  t        $ r |j                  d      ddfcY S w xY w)zHandle the pattern match.escapesr   ra   rP   rS   N)groupr   DOUBLE_BSLASHESCAPED_BSLASHstartendstriprN   rd   r   	Exception)r7   mdatara   r   s        r   handleMatchzInlineHilitePattern.handleMatch   s     779779%--m^LaggVWjZ[Z_Z_`aZbbb&'ggfo1776?2D''&/'')C.''c2AGGAJaHH(  .wwqz4--.s   02C# #&DD)rP   rP   NN)
r	   r
   r   r   r/   r3   rN   r0   rd   rp   r   r   r   r#   r#   >   s$    *%:(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                 T    g | _         ddgddgg dgd| _        t        |   |i | y)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: FalserP   ziSet class name for wrapper element. The default of Highlight will be usedif nothing is set. - Default: ''zCustom inline - default [])r?   r@   r+   N)r&   r.   superr/   )r7   argskwargs	__class__s      r   r/   zInlineHiliteExtension.__init__   sS      #!  !">?!
$ 	$)&)r   c                     | j                         }|j                  j                  t        t        ||      dd       |j                  dgdddii       y)zFAdd support for `:::language code` and `#!language code` highlighting.backtick   zpymdownx.highlight_enabledFN)
getConfigsinlinePatternsregisterr#   BACKTICK_CODE_REregisterExtensions)r7   r   r.   s      r   extendMarkdownz$InlineHiliteExtension.extendMarkdown   sV     "
""#67GQS#TV`bef
347KjZ_M`6abr   )r	   r
   r   r   r/   r   __classcell__)rw   s   @r   rr   rr      s    >*0cr   rr   c                      t        | i |S )zReturn extension.)rr   )ru   rv   s     r   makeExtensionr      s     !$1&11r   )N)rP   rP   NrP   N)r   markdownr   markdown.inlinepatternsr   r   md_utilxml.etree.ElementTreerZ   ElementTreer4   r-   STXordETXri   rh   r   rm   r   r   r   r!   r#   rr   r   r   r   r   <module>r      s   "  3 $ % % c$iE "I "V.}./ }.@ cI  cF2r   