
    Kwg                        d Z dZdZddlZ G d d      Z ej
                  d      Z ej
                  d      Z G d	 d
e      Ze	dk(  rd!dZ
 e
dddd        e
dddd        e
dddd        e
dddd        e
ddd        e
ddd        e
ddd        e
ddd        e
ddd        e
ddd        e
ddd        e
dd d       yy)")	FormatterDecimalFormatterz3.3.0z]
These help format numbers and dates in a user friendly way.
Used by the graphics framework.
    Nc                   (    e Zd ZdZd Zd Zd Zd Zy)r   z5Base formatter - simply applies python format stringsc                     || _         y Npattern)selfr	   s     O/var/www/horilla/myenv/lib/python3.12/site-packages/reportlab/lib/formatters.py__init__zFormatter.__init__   s	        c                      | j                   |z  S r   r   )r
   objs     r   formatzFormatter.format   s    ||c!!r   c                 N    | j                   j                  d| j                  dS )Nz('z'))	__class____name__r	   r
   s    r   __repr__zFormatter.__repr__   s    !^^44dllCCr   c                 $    | j                  |      S r   )r   )r
   xs     r   __call__zFormatter.__call__   s    {{1~r   N)r   
__module____qualname____doc__r   r   r   r    r   r   r   r      s    ;"Dr   r   z^\d*\.z0+$c                   *    e Zd ZdZddZd Zd Zd Zy)r   zlets you specify how to build a decimal.

    A future NumberFormatter class will take Microsoft-style patterns
    instead - "$#,##0.00" is WAY easier than this.Nc                 x    |dk(  r| j                   | _        n|| _        || _        || _        || _        || _        y )Nauto)_calcPlaces
calcPlacesplacesdotcommaprefixsuffix)r
   r"   
decimalSepthousandSepr%   r&   s         r   r   zDecimalFormatter.__init__    s9    6>"..DO DK 
r   c                     t        |D cg c]>  }t        t        j                  dt        j                  dt        |                        @ c}      | _        yc c}w )zMcalled with the full set of values to be formatted so we can calculate places N)maxlen_tz_resub_ld_restrr"   )r
   Vvs      r   r    zDecimalFormatter._calcPlaces*   s;    aP3vzz"VZZ3q6-BCDPQPs   AAc                    |dk  }|r| }| j                   | j                  }}|dk  }|r|r| }dt        |      z   dz   |z  }|r8|j                  d      \  }}||z   }|r|r|d   d|fv r|d d }|r|d   d|fv rnd}| j                  2d}|r,|dd |dd  }
}	|	dk(  r|
|z   }n| j                  |
z   |z   }|	}|r,|}||z   }|rd	|z   }| j
                  r| j
                  |z   }| j                  r|| j                  z   }|S )
Nr   z%.f.0r*   -)r"   r#   r0   splitr$   r%   r&   )r
   numsignr"   sepstripstrIntstrFracstrNewleftrightstrBodys               r   r   zDecimalFormatter.format.   sD   U$Ckk488	evgVV$s*c1$ll3/OFGGmG'"+#c":gcrlGg'"+#c":G::!F$QrlF23Ke2:"V^F!ZZ%/&8F  F7"3=;;kkG+G;;+Gr   c           	          d| j                   j                  | j                  t        | j                        t        | j
                        t        | j                        t        | j                        fz  S )NzB%s(places=%d, decimalSep=%s, thousandSep=%s, prefix=%s, suffix=%s))r   r   r"   reprr#   r$   r%   r&   r   s    r   r   zDecimalFormatter.__repr__S   sX    SNN++KKN$%%W  	r      r5   NNN)r   r   r   r   r   r    r   r   r   r   r   r   r      s    6R#Jr   r   __main__c                     t        |||||      } ||       }t        d|j                  |j                  |j                  |j
                  |j                  |||k(  xr dxs dfz         y )NzEplaces=%2d dot=%-4s comma=%-4s prefix=%-4s suffix=%-4s result=%10s %sOKBAD)r   printr"   r#   r$   r%   r&   )	nsr"   r'   r(   r%   r&   r4   rs	            r   trQ   ^   s    
6*[
GaDUXYX`X`bcbgbgijipiprsrzrz|}  }E  }E  FG  IJ  LM  IM  IV  RV  I_  Z_  X`  `  	ar   g33333G@z1,000.9   ,)r(   gG@z1,001.0z1,001r6   z1000.9z1001.01001g@@z1000.1gfffffD@z1000.6g;OC@z1000.4gC@1000rG   )__all____version__r   rer   compiler/   r-   r   r   rQ   r   r   r   <module>rZ      s  
 	)	 
	 	 rzz)rzz%@y @D Za fYqS)gic*ggbS)fWQ3'fXaghqgfRfVAfXaghqhxgfQ! r   