
    Bhm,                     B    S r SSKJr  SSKJr  S rS r " S S\5      rg	)
zImplement counter styles.

These are defined in CSS Counter Styles Level 3:
https://www.w3.org/TR/css-counter-styles-3/#counter-style-system

    )inf   )remove_whitespacec                     U u  pUS:X  a  U$ g)zCreate a string from a symbol.string  )string_or_urltype_values      I/var/www/html/env/lib/python3.13/site-packages/weasyprint/css/counters.pysymbolr      s     !LE    c                     [        U 5      n [        U 5      S:X  a_  U u  nUR                  S:X  aJ  UR                  S;   a  UR                  U;  a  UR                  $ g UR                  S:w  a  UR                  $ g g g )Nr   ident)decimaldiscnone)r   lentypelower_valuer   )tokenscounter_styletokens      r   parse_counter_style_namer      s~    v&F
6{a::   $77$$M9 ;;& :""f,{{" -	 ! r   c                   J   ^  \ rS rSrSrSS jr  S	S jrS rU 4S jrSr	U =r
$ )
CounterStyle#   zCounter styles dictionary.

Keep a list of counter styles defined by ``@counter-style`` rules, indexed
by their names.

See https://www.w3.org/TR/css-counter-styles-3/.

c           
      ^   US   S;   aP  Uu  p4US:X  a
  SnSU44nSnO0US:X  a*  S US   US   S:X  a  SOS 4n[        S	 USS   5       5      nS
nWSSWSSSWSS.	$ X;   a  Uc  / nOX;   a  g UR                  U5        X   R                  5       nUS   (       a	  US   u  pn
OSu  pU	(       a  XP;   ap  X   nUS   US'   UR                  U5        US   (       a	  US   u  pn
OSu  pU	(       a  XR;   a  Su  pMR  UR                  5        H  u  pX   b  M  Uc  M  XU'   M     OU$ U	(       a  M  U$ g )Nr   )	symbols()r   r   )NcyclicNr   r   r    fixedr   c              3   *   #    U  H	  nS U4v   M     g7f)r   Nr	   ).0arguments     r   	<genexpr>/CounterStyle.resolve_counter.<locals>.<genexpr>6   s       H9FXXx(s   )r    )r   -r"   autor   r   r   r	   )	systemnegativeprefixsuffixrangepadfallbacksymbolsadditive_symbolsr.   )Nsymbolic)extendsr   )tupleappendcopyitems)selfcounter_nameprevious_typescounter_type	argumentsr.   r5   r1   counterr8   _extended_counternamer   s                 r   resolve_counterCounterStyle.resolve_counter,   s   ?55&2#Lx'/$i02',)A,Yq\W-D$P  H9B12 H H( =( %"$&
 
 !%!#/!!,/(--/Gx %,X%6""2 >'+|$(8(BGH%"))&1x(-4X->**:6#;*> '7'='='?"=0U5F,1DM (@ #N! '$ NC "r   c                 
   U(       d	  U(       d   eU=(       d    U R                  X$5      nUc  SU ;   a  U R                  US5      $ gUS   (       a	  US   u  pVnOSu  pVnUc  / nOXd;   a  U R                  US5      $ UR                  U5        U(       a  X`;   av  X   nUS   US'   US   (       a	  US   u  pVnOSu  pVnXd;   a  U R                  US5      $ UR                  U5        UR                  5        H  u  pX9   b  M  U
c  M  XU	'   M     OU R                  US5      $ U(       a  M  US   S;   a"  [        * [        pUS;   a  S	nOUS
:X  a  SnX44nOUS   nU H  u  pXs=::  a  U::  d  M  O  M    O   U R                  XS   =(       d    SUS9$ SnUS:  nU(       a/  S US   =(       d    S 5       u  nnUS;   nU(       a  [        U5      nUS:X  aA  [        US   5      nUS	:  a  U R                  US5      $ US	-
  U-  n[        US   U   5      nGOUS:X  ai  [        US   5      nUS	:  a  U R                  US5      $ X-
  nSUs=::  a  U:  a  O  O[        US   U   5      nGO`U R                  XS   =(       d    SUS9$ US:X  aO  [        US   5      nUS	:  a  U R                  US5      $ US	-
  U-  nUS	-
  U-  S	-   n[        US   U   5      U-  nGOUS:X  a  [        US   5      nUS:  a  U R                  US5      $ / nUS:w  a5  US	-  nUR                  [        US   UU-     5      5        UU-  nUS:w  a  M5  SR                  [        U5      5      nGOjUS:X  a  US:X  a  [        US   S   5      nGOK/ n[        US   5      nUS:  a  U R                  US5      $ [        U5      nUS:w  a0  UR                  [        US   UU-     5      5        UU-  nUS:w  a  M0  SR                  [        U5      5      nOUS
:X  a  US:X  a#  US    H  u  nnUS:X  d  M  [        U5      nM     Oy/ n[        US   5      S	:  a  U R                  US5      $ US    HJ  u  nnUU-  nUR                  [        U5      /U-  5        UUU-  -  nUS:X  d  M9  SR                  U5      n  O   Uc  U R                  XS   =(       d    SUS9$ Uc   eUS   =(       d    SnUS   [        U5      -
  nU(       a!  W(       a  U[        W5      [        W5      -   -  nUS:  a  U[        US	   5      -  U-   nU(       a  W(       a  WU-   W-   nU$ )zjGenerate the counter representation.

See https://www.w3.org/TR/css-counter-styles-3/#generate-a-counter

Nr   r   r.   )Nr7   Nr2   )r,   N)
alphabeticr7   r   additiver   r4   )r?   c              3   8   #    U  H  n[        U5      v   M     g 7fN)r   )r%   	characters     r   r'   ,CounterStyle.render_value.<locals>.<genexpr>   s       0MK '0y!!Ks   r/   r*   )r7   rI   numericrJ   r!   r5   r#   r7   rI      rO   r6   r3   r-   )rF   render_valuer:   r<   r   absr   r   joinreversedextend)r=   counter_valuer>   rB   r?   r8   r.   fixed_numberrD   rE   r   	min_range	max_rangecounter_rangesinitialis_negativenegative_prefixnegative_suffixuse_negativelengthindexrepeatreversed_partsweightsymbol_stringpartsrepetitionsr3   pad_differences                                r   rQ   CounterStyle.render_valueg   sJ    ,&&OT11,O?D ((	BB 8,3H,=)G\,B)G\ !N%$$]I>>l+ ~#'< $4X$>!8$4;H4E1G\4J1G\+,,]IFF%%f-#3#9#9#;KD},1B(- $< ((	BB g$ 7~-$'4y33	:%	(46N$W-N$2 I6Y66 %3 $$z2?i- % / /
 #a'0M:&K*KK0M,O_ AB   #M 2 X+,Fz((	BB"Q&&0EWY/67Gw+,Fz((	BB!0EE"F" !3E!:;((!:#6#C)#1 ) 3 3 z!+,Fz((	BB"Q&&0E#a'F2Q6FWY/67&@G|#+,Fz((	BBN1$"%%fI&}v'=>'@ A&(	  1$
 ggh~67Gy ! !3A!67!#WY/0A:,,]IFF #M 2#q("))&	*=6+AB+D E!f,M $q( ''(>":;z!!-45G-H)FM{"("7 .I w123a7,,]IFF-45G-H)FM"/6"9KLL&"7!8;!FG!Vk%99M$)"$''%. .I ((!:#6#C)#1 ) 3 3 """ en'Q#g,.<c/2S5IIINA$vc!f~5?G <%//AG r   c                     U R                  U5      nUc  SU ;   a  U R                  SU5      $ g[        US   =(       d    S5      n[        US   =(       d    S5      nU R                  X!S9nUc   eXF-   U-   $ )z2Generate the content of a ::marker pseudo-element.r   r   r0   r"   r1   )r   z. )r>   )rF   render_markerr   rQ   )r=   r>   rV   rB   r0   r1   r   s          r   rk   CounterStyle.render_marker  s    &&|4?D )))]CC );^<)=-=>!!-!K   ~&&r   c                 2   > [        [        TU ]	  5       5      $ rL   )r   superr;   )r=   	__class__s    r   r;   CounterStyle.copy&  s    EGLN++r   r	   rL   )NNN)__name__
__module____qualname____firstlineno____doc__rF   rQ   rk   r;   __static_attributes____classcell__)ro   s   @r   r   r   #   s.    9v FJ$(l\'", ,r   r   N)	ru   mathr   utilsr   r   r   dictr   r	   r   r   <module>r{      s*     $	#E,4 E,r   