
    ͆h                     
   S r SSKJr  SSKJr  SSKJr  SSKJs  J	r  SSK
r
SR                  \R                  \" S5      \R                  5      rSrS	r " S
 S\5      rS rSS jrSS jr " S S\5      r " S S\5      rS rg)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                       \ rS rSrSrSrg)InlineHiliteException%   zInlineHilite exception. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r
       M/opt/services/DDDS/venv/lib/python3.13/site-packages/pymdownx/inlinehilite.pyr   r   %   s    !r   r   c                 r    U R                  SS5      n U R                  SS5      n U R                  SS5      n U $ )zBasic html escaping.&z&amp;<z&lt;>z&gt;)replace)txts    r   _escaper   )   s9     ++c7
#C
++c6
"C
++c6
"CJr   c                 8    USL =(       d    US:H  =(       d    X:H  $ )zTest language.N*r
   )languagetest_languages     r   _testr   2   s!     D UMS$8UH<UUr   c                     U" XX25      $ )zFormatter wrapper.r
   )srcr   md
class_namefmts        r   
_formatterr$   8   s     sj--r   c                   @    \ rS rSrSrS rS rS rSS jrS r	S	 r
S
rg)InlineHilitePattern>   z Handle the inline code patterns.c           
         X l         [        R                  " XU5        X0l        S[        U R
                  S./U l        U R                   R                  S/ 5      nU Ht  nUR                  S5      nUR                  S5      nUR                  SU R
                  5      nUc  MF  Uc  MK  U R                  U[        R                  " [        XxS95        Mv     S	U l        g)
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patternr2   r!   r/   customr,   r"   inline_formats	            r   r3   InlineHilitePattern.__init__A   s       3 '!00
 <#F::f%DG,J"JJx1D1DEMJ$:))%%jZ[ $  %r   c                     U[         R                  " [        US9US.nUS:X  a  X0R                  S'   gU R                  R	                  U5        g)z@Extend SuperFences with the given name, language, and formatter.)r   r+   r   r   N)r8   r9   r   r5   append)r;   r,   r.   objs       r   r7   (InlineHilitePattern.extend_custom_inline^   sH     %%e4@"
 3;!$OOAOO""3'r   c                    U R                   (       d  SU l         U R                  S   U l        SnSU l        U R                  R
                   H)  n UR                  5       nUR                  5       U l          O   U R                  S   nU(       a  UOUS   U l	        UR                  SS5      U l        US   U l        US   U l        US   U l        US	   U l        US
   U l        US   U l        gg! [         a     M  f = f)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)r:   r2   rE   highlighterr!   registeredExtensionsget_pymdownx_highlight_settingsget_pymdownx_highlighterAttributeErrorrF   r6   rG   rH   rI   rJ   rK   rL   rM   )r;   r2   extrF   s       r   get_settings InlineHilitePattern.get_settingsl   s    ###'D $(KK0B$CD!F#Dww33 @@BF'*'C'C'ED$	 4 K0I*3Y9LDN(.

3I4(PD%$\2DO"()9":D &~ 6D#K0DN#)*;#<D '-.C'DD$/ $ & s   %C00
C>=C>Nc                    U R                   =(       d    U=(       d    U R                  n[        U R                   [        5      (       a  U R                   OSnU(       a  U R	                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  US9R                  XU R                  SS9nU R                  R                  R                  UR                   5      Ul        U$ ["        R$                  " S5      nU R                  R                  R                  ['        U5      5      Ul        U$ )z'Syntax highlight the inline code block. )rH   rI   rJ   rK   rG   rL   rM   default_langT)inlinecode)rE   rH   
isinstancestrrN   rI   rJ   rK   rG   rL   rM   	highlightrF   r!   	htmlStashstoretextetreeElementr   )r;   r    r   	classnamer!   process_textrX   els           r   r4   "InlineHilitePattern.highlight_code   s    ,,KKDOO0:4;P;PRU0V0Vt,,\^!!??#22!....%)%>%> $ 4 4$($<$<) " 	 it~~diC  gg''--bgg6BG 	 v&Bgg''--gcl;BG	r   c                    [        U R                  5       Hf  nUS   " U5      (       d  M  US   " UUU R                  S9n[        U[        5      (       a%  U R                  R
                  R                  U5      nUs  $    g)zHandle code block.r-   r.   )r    r   r!   N)reversedr5   r!   r[   r\   r^   r_   )r;   langr    entryvalues        r   handle_codeInlineHilitePattern.handle_code   sp     doo.EV}T""k*!ww
 eS)) GG--33E:E /r   c                 4   UR                  S5      (       aJ  UR                  S5      R                  [        [        5      UR	                  S5      UR                  S5      4$ UR                  S5      (       a  UR                  S5      OSnUR                  S5      R                  5       nU R                  5          U R                  X45      UR	                  S5      UR                  S5      4$ ! [         a    e [         a    UR                  S5      SS4s $ f = f)zHandle the pattern match.escapesr   ri   rW   rZ   N)groupr   DOUBLE_BSLASHESCAPED_BSLASHstartendstriprT   rl   r   	Exception)r;   mdatari   r    s        r   handleMatchInlineHilitePattern.handleMatch   s     779779%--m^LaggVWjZ[Z_Z_`aZbbb&'ggfoo1776?2D''&/'')C.''2AGGAJaHH(  .wwqz4--.s   :1C, ,(DD)r2   rF   rG   r5   r:   rH   rN   rL   r!   rK   rM   rI   rE   rJ   )rW   rW   NN)r   r   r   r   r   r3   r7   rT   r4   rl   ry   r   r
   r   r   r&   r&   >   s$    *%:(E8..r   r&   c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )InlineHiliteExtension   z4Add inline highlighting extension to Markdown class.c                 V   > / U l         SS/SS// S/S.U l        [        TU ]  " U0 UD6  g)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: FalserW   ziSet class name for wrapper element. The default of Highlight will be usedif nothing is set. - Default: ''zCustom inline - default [])rE   rF   r/   N)r*   r2   superr3   )r;   argskwargs	__class__s      r   r3   InlineHiliteExtension.__init__   sS      #!  !">?!
$ 	$)&)r   c                     U R                  5       nUR                  R                  [        [        X!5      SS5        UR                  S/SSS005        g)zFAdd support for `:::language code` and `#!language code` highlighting.backtickr}   zpymdownx.highlight_enabledFN)
getConfigsinlinePatternsregisterr&   BACKTICK_CODE_REregisterExtensions)r;   r!   r2   s      r   extendMarkdown$InlineHiliteExtension.extendMarkdown   sS     "
""#67G#TV`bef
347KjZ_M`6abr   )r2   r*   )	r   r   r   r   r   r3   r   r   __classcell__)r   s   @r   r|   r|      s    >*0c cr   r|   c                      [        U 0 UD6$ )zReturn extension.)r|   )r   r   s     r   makeExtensionr      s     !$1&11r   )N)rW   rW   NrW   N)r   markdownr   markdown.inlinepatternsr   r   md_utilxml.etree.ElementTreera   ElementTreer8   r1   STXordETXrr   rq   r   rv   r   r   r   r$   r&   r|   r   r
   r   r   <module>r      s   "  3 $ % % c$iE "I "V.}./ }.@ cI  cF2r   