+
    f0io                         R t ^ RIHt ^ RIHt ^RIHt ^RIHt ^RI	H
t
HtHt ^RIHtHt ^RIHt ^RIHt ^ R	It^ R
IHtHtHt ]'       d   ^ RIHt  ! R R]4      t ! R R]4      tR tR	# )z
This extension adds Fenced Code Blocks to Python-Markdown.

See the [documentation](https://Python-Markdown.github.io/extensions/fenced_code_blocks)
for details.
)annotations)dedent)	Extension)Preprocessor)
CodeHiliteCodeHiliteExtensionparse_hl_lines)get_attrs_and_remainderAttrListExtension)parseBoolValue_escape_attrib_htmlN)TYPE_CHECKINGAnyIterable)Markdownc                  .   a  ] tR t^&tV 3R ltR tRtV ;t# )FencedCodeExtensionc                	@   < R RR./V n          \        SV `  ! R/ VB  R# )lang_prefix	language-z6Prefix prepended to the language. Default: "language-"N )configsuper__init__)selfkwargs	__class__s   &,e/Users/agent/.openclaw/workspace/venv/lib/python3.14/site-packages/markdown/extensions/fenced_code.pyr   FencedCodeExtension.__init__'   s,    K)ab
 	/"6"    c                    VP                  V 4       VP                  P                  \        WP	                  4       4      R^4       R# )z8Add `FencedBlockPreprocessor` to the Markdown instance. fenced_code_blockN)registerExtensionpreprocessorsregisterFencedBlockPreprocessor
getConfigs)r   mds   &&r   extendMarkdown"FencedCodeExtension.extendMarkdown.   s7    
T"
!!"9"oo>O"PRegijr    )r   )__name__
__module____qualname____firstlineno__r   r)   __static_attributes____classcell__r   s   @r   r   r   &   s    #k kr    r   c                     a  ] tR t^5tRt]P                  ! ]! R4      ]P                  ]P                  ,          ]P                  ,          4      tR V 3R lltR R ltR R ltR	 R
 ltRtV ;t# )r&   z%Find and extract fenced code blocks. a}  
            (?P<fence>^(?:~{3,}|`{3,}))[ ]*                          # opening fence
            ((\{(?P<attrs>[^\n]*)\})|                                # (optional {attrs} or
            (\.?(?P<lang>[\w#.+-]*)[ ]*)?                            # optional (.)lang
            (hl_lines=(?P<quot>"|')(?P<hl_lines>.*?)(?P=quot)[ ]*)?) # optional hl_lines)
            \n                                                       # newline (end of opening fence)
            (?P<code>.*?)(?<=\n)                                     # the code block
            (?P=fence)[ ]*$                                          # closing fence
        c                    V ^8  d   QhRRRR/# )   r(   r   r   zdict[str, Any]r   )formats   "r   __annotate__$FencedBlockPreprocessor.__annotate__E   s     
 
8 
^ 
r    c                	n   < \         SV `  V4       W n        R V n        / V n        R V n        . ROV n        R# )FN)linenums
guess_lang	noclassesuse_pygments)r   r   r   checked_for_depscodehilite_confuse_attr_listbool_options)r   r(   r   r   s   &&&r   r    FencedBlockPreprocessor.__init__E   s7     %/1"
r    c                    V ^8  d   QhRRRR/# )r4   linesz	list[str]returnr   )r5   s   "r   r6   r7   S   s     P  P  P y P r    c           
     *   V P                   '       go   V P                  P                   FM  p\        V\        4      '       d   VP                  4       V n        \        V\        4      '       g   KF  RV n        KO  	  RV n         RP                  V4      p^ p V P                  P                  W44      pV'       EdK   RR. / 3w  rgrVP                  R4      '       do   \        VP                  R4      4      w  rV'       d   VP                  R4      pK|  V P                  V
4      w  rxp	\!        V4      '       d   VP#                  ^ 4      pM\VP                  R4      '       d   VP                  R4      pVP                  R4      '       d   \%        VP                  R4      4      V	R&   V P                  '       d   V P                  R,          '       d   V	P'                  RR4      '       d   V P                  P)                  4       pVP+                  V	4       V'       d,   R	P-                  R
P                  V4      VR,          4      VR&   \/        VP                  R4      3RVRVP#                  RR4      /VB pVP1                  RR7      pEMR;p;p;ppV'       d.   V P2                  P'                  RR4      pRV \5        V4       R2pV'       d   R\5        R
P                  V4      4       R2pV'       d   R\5        V4       R2pV P                  '       dG   V	'       d?   V	P'                  RR4      '       g'   RP                  R V	P7                  4        4       4      pV P9                  VP                  R4      4      pRV V RV V RV R2	pV P                  P:                  P=                  V4      pVRVP?                  4         RV RW5P                  4       R  2pVP?                  4       ^,           \!        V4      ,           pEKo   TPA                  R4      # )z7Match and store Fenced Code Blocks in the `HtmlStash`. T
N attrslanghl_linesr<   z{} {} 	css_classcodestylepygments_styledefaultF)shebangr   r   z class=""z id="c              3  \   "   T F"  w  rVR 8w  g   K  RV R\        V4       R2x  K$  	  R# 5i)r<   rK   z="rR   Nr   ).0kvs   &  r   	<genexpr>.FencedBlockPreprocessor.run.<locals>.<genexpr>   s7      +KY41]^bp]p>as"%8%;$<A>>s   ,,z<prez><code>z</code></pre>)!r=   r(   registeredExtensions
isinstancer   r'   r>   r
   r?   joinFENCED_BLOCK_REsearchgroupr	   endhandle_attrslenpopr   getcopyupdater5   r   hiliter   r   items_escape	htmlStashstorestartsplit)r   rC   exttextindexmrI   idclassesr   rH   	remainderlocal_config	highliterrM   id_attr	lang_attr
class_attrkv_pairsprefixplaceholders   &&                   r   runFencedBlockPreprocessor.runS   s    $$$ww33c#677+.>>+;D(c#455)-D&	 4 %)D!yy$$++D8Aq,0"b",<)'777##'>qwww?O'P$E  !g *.*;*;E*B'B7||&{{1~wwv wwvwwz**-;AGGJ<O-Pz* '''D,@,@,P,PU[U_U_`nptUuUu#'#7#7#<#<#>L ''/ 4;NNHHW-(55[1 !+!!! +../?K! '	!I %++E+:DBDDGDiD*x!%!L&.vh7J47P6QQR$S	'/0CCHHWDU0V/WWX%Y
$)*=b*A)B!"D)))fVZZX]=^=^ $&77 +KQ<<>+ $  <<8D!':,fYKzQRSWRXXefD"gg//55d;z	*+2k]"T%%'(^<LM	AK(88zz$r    c                    V ^8  d   QhRRRR/# )r4   rH   zIterable[tuple[str, str]]rD   z%tuple[str, list[str], dict[str, Any]]r   )r5   s   "r   r6   r7      s     $ $"; $@e $r    c                    Rp. p/ pV Ff  w  rVVR8X  d   TpK  VR8X  d   VP                  V4       K*  VR8X  d   \        V4      WE&   K@  WPP                  9   d   \        VRRR7      WE&   Kb  WdV&   Kh  	  W#V3# )z5Return tuple: `(id, [list, of, classes], {configs})` rG   rr   .rJ   FT)fail_on_errorspreserve_none)appendr   r@   r   )r   rH   rr   rs   configsrU   rV   s   &&     r   ra   $FencedBlockPreprocessor.handle_attrs   s    DADycq!j+A.
'''+AeSWX

  G##r    c                    V ^8  d   QhRRRR/# )r4   txtstrrD   r   )r5   s   "r   r6   r7      s      3 3 r    c                    VP                  RR4      pVP                  RR4      pVP                  RR4      pVP                  RR4      pV# )	zbasic html escaping &z&amp;<z&lt;rY   z&gt;rR   z&quot;)replace)r   r   s   &&r   ri   FencedBlockPreprocessor._escape   sG    kk#w'kk#v&kk#v&kk#x(
r    )r@   r=   r>   r   r?   )r+   r,   r-   r.   __doc__recompiler   	MULTILINEDOTALLVERBOSEr]   r   r}   ra   ri   r/   r0   r1   s   @r   r&   r&   5   s\    0jj  	 	ryy 2::-O
 
P d$$ r    r&   c                     \        R/ V B # )Nr   )r   )r   s   ,r   makeExtensionr      s    (((r    )r   
__future__r   textwrapr   rG   r   r$   r   
codehiliter   r   r   	attr_listr	   r
   utilr   serializersr   r   typingr   r   r   markdownr   r   r&   r   r   r    r   <module>r      sX    #   ( G G A ! - 	 / /!k) kHl HV)r    