
    ͆hI                         S r SSKJ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SS	S
SSSS.rSSSSSS.rS r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rS  rg)!a  
Fancy lists in the style of Pandoc.

---
# A Python implementation of John Gruber's Markdown.

# Started by Manfred Stienstra (http://www.dwerg.net/).
# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
# Currently maintained by Waylan Limberg (https://github.com/waylan),
# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).

# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later)
# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
# Copyright 2004 Manfred Stienstra (the original version)

# License: BSD (see LICENSE.md for details).
---

Adapted to support "fancy" behavior by Copyright 2024 Isaac Muse.

Work in progress, not fully tested.
    )BlockProcessor)Treeprocessor   )Block)BlocksExtensionN   
   2   d   i  i  )IVXLCDMdecimalzlower-alphazupper-alphazlower-romanzupper-roman1aAir   c                 4   U R                  5       n SnSnU[        U 5      :  at  US-   [        U 5      :  a>  [        X      [        XS-         :  a#  U[        XS-         [        X      -
  -  nUS-  nOU[        X      -  nUS-  nU[        U 5      :  a  Mt  U$ )zj
Convert Roman numeral to integer.

Values should be validated before as no validation during conversion.
r   r      )upperlen	ROMAN_MAP)stotalr   s      K/opt/services/DDDS/venv/lib/python3.13/site-packages/pymdownx/fancylists.py	roman2intr!   )   s     	
	A E	A
c!f*q53q6>io	!E(0CCYqQx(9QT?::EFA Yqt_$EFA c!f* L    c                   n   ^  \ rS rSrSrSrS/rSSSSSSSSSSS	.
rU 4S
 jrS r	S r
S rS rS rSrU =r$ )FancyOListProcessorB   z"Process fancy ordered list blocks.olr   r   r   r   r   )
zdot-decimalzparen-decimalz	dot-romanzparen-romanz	dot-ROMANzparen-ROMANz	dot-alphazparen-alphaz	dot-ALPHAzparen-ALPHAc                 l  > [         TU ]  U5        US   nSU;   U l        SU;   U l        US   U l        US   U l        SnSU;   a  US-  nSU;   a  US	-  nSU;  a  US
-  nSU;   a  US-  n[        R                  " SU R                  S-
  U4-  [        R                  5      U l
        [        R                  " SU R                  S-
  U4-  [        R                  5      U l        [        R                  " SU R                  U R                  S-  S-
  U4-  [        R                  5      U l        SU l        g)Initialize.additional_ordered_stylesalpharomaninject_styleinject_class genericz| \#a  
            | (?=[IVXLCDM]{2})
              M*
              (?:C[MD]|D(?:C{0,4}|C{5}\b)|(?:C{0,9}|C{10}\b))
              (?:X[CL]|L(?:X{0,4}|X{5}\b)|(?:X{0,9}|X{10}\b))
              (?:I[XV]|V(?:I{0,4}|I{5}\b)|(?:I{0,9}|I{10}\b))
            | (?=[ivxlcdm])
              m*
              (?:c[md]|d(?:c{0,4}|c{5}\b)|(?:c{0,9}|c{10}\b))
              (?:x[cl]|l(?:x{0,4}|x{5}\b)|(?:x{0,9}|x{10}\b))
              (?:i[xv]|v(?:i{0,4}|i{5}\b)|(?:i{0,9}|i{10}\b))
            z<
                | [IVXLCDM](?=\)|\.[ ]{2})
                zD
            | [a-z]
            | [A-Z](?=\)|\.[ ]{2})
            z#^[ ]{0,%d}(?:(?:\d+%s)[).])[ ]+(.*)r   z+^[ ]{0,%d}((?:(?:\d+%s)[).]|[-*+]))[ ]+(.*)z(^[ ]{%d,%d}(?:(?:\d+%s)[).]|[-*+])[ ]+.*r   r   N)super__init__alpha_enabledroman_enabledr,   r-   recompile
tab_lengthVERBOSElist_rechild_re	indent_re
startswith)selfparserconfig
list_typesformats	__class__s        r    r1   FancyOListProcessor.__init__T   sY    	 78
$
2$
2">2">2
"wGj    G j(   j   G zz2doo6I75SSJJ
 

:dooPQ>QSZ=[[JJ
 74??DOO^_L_bcLcel:mmJJ

 r"   c                 J    [        U R                  R                  U5      5      $ )z(Test to see if block starts with a list.)boolr8   match)r<   parentblocks      r    testFancyOListProcessor.test   s     DLL&&u-..r"   c                    U R                  U5      nU R                  X2R                  S5      U5      u  pEUGb  UR                  U R                  ;   Gaw  UR
                  R                  SS5      U:X  GaV  UnUS   R                  (       aI  [        R                  " S5      nUS   R                  Ul        SUS   l        US   R                  SU5        U R                  US   5      nUbQ  UR                  (       a@  [        R                  " US   S5      nUR                  R                  5       Ul        SUl        [        R                  " US5      n	U R                  R                  R!                  S5        UR                  S5      n
U R                  R#                  X/5        U R                  R                  R%                  5         GONUR                  S	;   a  UnGO:U R&                  S
:X  a  UbA  UR
                  R                  SS5      R)                  S5      (       a  XSR
                  S'   UnOU R*                  U   US.nU R,                  (       a  S[.        US       S3US'   U R0                  (       a  S[.        US       3US'   [        R                  " UU R&                  U5      nO [        R                  " XR&                  5      nU R(                  S:w  a:  UR
                  R                  SS5      (       d  U R(                  UR
                  S'   U R                  R                  R!                  S5        U H{  nUR)                  SU R2                  -  5      (       a"  U R                  R#                  US   U/5        MH  [        R                  " US5      n	U R                  R#                  X/5        M}     U R                  R                  R%                  5         g)zProcess list items.r   N__fancylistr.   pli	looselist)r&   ulr&   forcetyperK   list-style-type: rS   ;stylefancylists-classr   startlist )	lastChild	get_itemspoptagSIBLING_TAGSattribgettextetreeElementinserttail
SubElementlstripr=   statesetparseBlocksresetTAGr;   OL_TYPESr,   OL_STYLEr-   r6   )r<   rF   blockssiblingitems
fancy_typelstrM   lchrN   	firstitemra   items                r    runFancyOListProcessor.run   s    ..( !NN7JJqM6J GKK43D3D$DNN}b1Z? C 2w|| MM#&R!BBq!$ ..R)C388$$SWc2* !!#t,BKK!!+.		!IKK##B4KK##% ZZ<'C xx4&7>>+=+=mR+P+[+[\c+d+d4>NN=1!C&*mmJ&?PZ[F((,=hvf~>V=WWX*Yw((,78P7Q*Rw**C &&vxx8 #%cjjnnWb.I.I&*oo

7# 	f% Ds4??233''B$8 %%c40''F3  	!r"   c                    UR                  S5      R                  S5      (       a  gUR                  S5      S   R                  5       nUS:X  a#  UR                  S5      SS R	                  S5      $ US	:X  a&  [        [        UR                  S5      SS 5      5      $ US
:X  a7  [        [        UR                  S5      SS R                  5       5      S-
  5      $ g)z/Translate list convention into a logical start.r   #r   -r   NrL   (r+   r*   @   )	groupr;   splitlowerri   strr!   ordr   )r<   rt   mts       r    	get_startFancyOListProcessor.get_start   s     771:  %%S!!$**,	>771:cr?))#..'\yCR122'\s1771:cr?0023b899 r"   c                    UR                  S5      SS nUR                  S5      S   nSnUS:X  a  US-  nOUS:X  a  US-  nOXc4$ UR                  S	5      (       Ga  UR                  S
S5      S   nUS:X  d  UR                  5       S:X  a  UR	                  5       (       d  UR                  5       S:X  aI  U R
                  (       a8  UR                  5       (       a#  [        U5      S:  d]  UR                  5       S;   dI  UR                  5       S:X  aX  U R                  (       aG  [        U5      S:X  a8  UR                  5       (       a#  U(       a  XcR                  S
S5      S   -   OUnX34$ SnUS:X  a#  Xc(       a  UR                  S
S5      S   OS-  nXc4$ UR	                  5       (       a  US-  nXc4$ [        U5      S:X  GaE  UR                  5       (       Ga/  UR                  5       (       a  US;   nU R                  (       a4  U R
                  (       a  U(       a  U(       a  US-   U:w  a  US:w  a  US-  nOU R                  (       a  U(       d  US-   U:X  d  U(       d  US-  nOUS-  n Xc4$ UR                  5       (       a  US;   nU R                  (       a6  U R
                  (       a  U(       a  U(       a  US-   U:w  a  US:w  a  US-  nXc4$ U R                  (       a  U(       d  US-   U:X  d  U(       d  US-  nXc4$ US-  nXc4$ UR                  5       (       a  US-  nXc4$ UR                  5       (       a  US-  nXc4$ )z)Get the fancy type for a given list item.r   NrL   r.   .zdot-)zparen-rQ   r}   r|   r   r+   r   ivxlcdmr*   r   IVXLCDMROMANr   ALPHA)r   r;   r   r   isdigitr3   isalphar   r2   islowerisupper)	r<   r   firstrt   valuesep	list_typeltypein_romans	            r    get_fancy_type"FancyOListProcessor.get_fancy_type  s    
3Bggajn	 #:ICZ!I((   ))$$S!,Q/E |)+KKMW,&&MMOOZ!^u{{}	'A')d.@.@SZST_Y^YfYfYhYhHQY)9)9#q)A!)DDW`
!-- J C<
))#q1!4	QIJ $$I ]]__"IF $$E Z1_}} I-&& ..!8W9LQ[8[`eil`l (I''I<OT^;^fn(I(I( $$'  I-&& ..!8W9LQ[8[`eil`l (I $$ ''I<OT^;^fn(I $$ (I $$ ]]__ I $$ ]]__ I$$r"   c                    SnU R                   S:X  a9  Ub6  UR                  U R                  ;   a  UR                  R	                  SS5      nUn/ n/ nUR                  S5       GHV  nU(       a  UR                  U5        M  U R                  R                  U5      n	U	(       a  U R                  X(       + U5      u  pTU(       a  XT:w  a  UR                  U5        Mx  U(       d&  U R                   S:X  a  U R                  XY5      U l        UnUR                  U	R                  S5      5        M  U R                  R                  U5      (       aU  US   R                  SU R                  -  5      (       a  SR                  US   U5      US'   GM*  UR                  U5        GM>  SR                  US   U5      US'   GMY     U(       a!  UR!                  S	SR#                  U5      5        Xd4$ )
zBreak a block into list items.r.   r&   rK   
r   rL   r[   z{}
{}r   )rn   r_   r`   ra   rb   r   appendr9   rE   r   r   r;   r   r:   r6   formatrf   join)
r<   rr   rG   rq   rt   fancyrs   restliner   s
             r    r]   FancyOListProcessor.get_itemsT  s    
88t"w{{d6G6G'G$^^//rB
KK%D D! ##D)A %)$7$79e$L! U0KK% T!1&*nnU&>DO"
 QWWQZ( %%d++9''doo(=>> (b	4 @E"I LL& %OOE"It<b	Q &V MM!TYYt_-  r"   )r2   r9   r:   r-   r,   r8   r3   r;   )__name__
__module____qualname____firstlineno____doc__rn   r`   ro   r1   rH   ry   r   r   r]   __static_attributes____classcell__rA   s   @r    r$   r$   B   s`    ,
C6LH@D/
["z:K%Z:! :!r"   r$   c                   H    \ rS rSrSrSrSrSSSSS	S
.rS rS r	S r
S rSrg)FancyListBlocki  zCollapse code.
fancylistsTr   r*   r   r+   r   r   c                     U R                   S   nU R                   S   U l        U R                   S   U l        SU;   U l        SU;   U l        g)zHandle initialization.r)   r,   r-   r+   r*   N)r>   r,   r-   r3   r2   )r<   ordered_styless     r    on_initFancyListBlock.on_init  sO     %@A KK7 KK7$6$6r"   c                 <   SU l         SU l        SU l         U R                  R	                  5        H  nUR	                  S5       Vs/ s H  o3R                  5       PM     snu  pEUS:X  an  US;   ah  UR                  5       S:X  a  U R                  (       d  [        S5      eUR                  5       S	:X  a  U R                  (       d  [        S5      eXPl         M  US
:X  a  [        S[        U5      5      U l        M  [        S5      e   gs  snf ! [         a     gf = f)zHandle on validate event.r   Nr   =rS   )r   r   r   r   r   r   zAlphabetical lists not enabledr   rY   zNot a valid optionFT)rS   rY   countargumentr   stripr   r2   
ValueErrorr3   maxint	Exception)r<   rF   r   xnamer   s         r    on_validateFancyListBlock.on_validate  s     	

	]]((*23''#,?,Qwwy,?6>e/H&H{{}+D4F4F()IJJ{{}+D4F4F()IJJ %IW_!$QE
!3DJ$%9:: +  @  		s$   0D D	 B(D 	D 
DDc                    U R                   SU R                  U R                      -   S.nU R                  b  [        U R                  5      US'   U R                  (       a  S[
        U R                       S3US'   U R                  (       a  S[
        U R                       3US'   Xl        [        R                  " US	U5      U l
        U$ )
zCreate the element.zforce-rR   rY   rT   rU   rV   rW   rX   r&   )rS   OL_TYPErY   r   r,   rp   r-   rF   rd   rh   r&   )r<   rF   ra   s      r    	on_createFancyListBlock.on_create  s     ))Ht||DII?V4VW::!!$**oF7O 1(4992E1FaHF7O +HTYY,?+@AF7O""648r"   c                     [        U R                  5      (       d&  U R                  R                  U R                  5        gg)zOn end.N)rZ   r&   rF   remove)r<   rG   s     r    on_endFancyListBlock.on_end  s,     DGG}}KKtww' r"   )	r2   r   r-   r,   r&   rF   r3   rY   rS   N)r   r   r   r   r   NAMEARGUMENTr   r   r   r   r   r    r"   r    r   r     s9    DHG72 (r"   r   c                   6   ^  \ rS rSrSrS/rSrU 4S jrSrU =r	$ )FancyUListProcessori  zProcess unordered list blocks.rP   c                 z   > [         TU ]  X5        [        R                  " SU R                  S-
  -  5      U l        g)r(   z^[ ]{0,%d}[-+*][ ]+(.*)r   N)r0   r1   r4   r5   r6   r8   )r<   r=   r>   rA   s      r    r1   FancyUListProcessor.__init__  s2     	(zz"<RS@S"TUr"   )r8   )
r   r   r   r   r   r`   rn   r1   r   r   r   s   @r    r   r     s    (6L
CV Vr"   r   c                       \ rS rSrSrS rSrg)FancyListTreeprocessori  zClean up fancy list metadata.c                 t    UR                  S5       H"  nSUR                  ;   d  M  UR                  S	 M$     U$ )z-Remove intermediate fancy list type metadata.r&   rK   )iterra   )r<   rootr&   s      r    ry   FancyListTreeprocessor.run  s5     ))D/B		)IIm, " r"   r   N)r   r   r   r   r   ry   r   r   r"   r    r   r     s
    'r"   r   c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )FancyListExtensioni  zHTML Blocks Extension.c                 L   > / SQS/SS/SS/S.U l         [        TU ]  " U0 UD6  g)r(   )r+   r*   r/   z?Specify the ordered list formats to add in addition to decimal.Fz=Inject style attribute with the appropriate 'list-style-type'z/Inject a class indicating the 'list-style-type')r)   r,   r-   N)r>   r0   r1   )r<   argskwargsrA   s      r    r1   FancyListExtension.__init__  sG    
 .Q*
 O
 A
 	$)&)r"   c                    U R                  5       nUR                  [        U5        [        UR                  U5      n[        UR                  U5      nUR                  R                  R                  USS5        UR                  R                  R                  USS5        UR                  R                  [        U5      SS5        g)z!Add Details to Markdown instance.olist(   ulist   zolist-cleanupr	   N)	
getConfigsregisterr   r$   r=   r   blockprocessorstreeprocessorsr   )r<   mdrq   r>   r&   rP   s         r    extendMarkdownBlocks'FancyListExtension.extendMarkdownBlocks  s     "/ F3 F3
		!!**2w;
		!!**2w;
""#9"#=PRSr"   )r>   )	r   r   r   r   r   r1   r   r   r   r   s   @r    r   r     s     *(	T 	Tr"   r   c                      [        U 0 UD6$ )zReturn extension.)r   )r   r   s     r    makeExtensionr     s     t.v..r"   )r   markdown.blockprocessorsr   markdown.treeprocessorsr   blocks.blockr   rq   r   xml.etree.ElementTreerd   ElementTreer4   r   rp   r!   r$   r   r   r   r   r   r   r"   r    <module>r      s   , 4 1  # % % 	!"2CcM	 
				2L!. L!^
D(U D(N
V- 
V	] 	 T  TF/r"   