
    kf                        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           dS dS )$)	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dS )r   z5Base formatter - simply applies python format stringsc                     || _         d S Npattern)selfr	   s     X/var/www/html/nettyfy-visnx/env/lib/python3.11/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                 0    | j         j        d| j        dS )Nz('z'))	__class____name__r	   r
   s    r   __repr__zFormatter.__repr__   s    !^444dlllCCr   c                 ,    |                      |          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      sY        ;;  " " "D D D    r   r   z^\d*\.z0+$c                   ,    e Zd ZdZd	dZd Zd Zd ZdS )
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                 r    |dk    r| j         | _        n|| _        || _        || _        || _        || _        d S )Nauto)_calcPlaces
calcPlacesplacesdotcommaprefixsuffix)r
   r$   
decimalSepthousandSepr'   r(   s         r   r   zDecimalFormatter.__init__    s>    6>>".DOO DK 
r   c                 B    t          d |D                       | _        dS )zMcalled with the full set of values to be formatted so we can calculate placesc                     g | ]P}t          t                              d t                              d t	          |                                        QS ) )len_tz_resub_ld_restr).0vs     r   
<listcomp>z0DecimalFormatter._calcPlaces.<locals>.<listcomp>,   sB    PPP3vzz"VZZ3q66-B-BCCDDPPPr   N)maxr$   )r
   Vs     r   r"   zDecimalFormatter._calcPlaces*   s$    PPaPPPQQr   c                    |dk     }|r| }| j         | j        }}|dk    }|r|r| }dt          |          z   dz   |z  }|rF|                    d          \  }}||z   }|r&|r$|d         d|fv r|d d         }|r|d         d|fv nd}| j        7d}|r1|dd         |dd          }
}	|	dk    r|
|z   }n| j        |
z   |z   }|	}|1|}||z   }|rd	|z   }| j        r
| j        |z   }| j        r
|| j        z   }|S )
Nr   z%.fr   0r-   -)r$   r%   r2   splitr&   r'   r(   )r
   numsignr$   sepstripstrIntstrFracstrNewleftrightstrBodys               r   r   zDecimalFormatter.format.   s}   U 	$Ck48	-e-vgVV$s*c1 	$ll3//OFGGmG SR'"+#c":":gcrclGgR'"+#c":":G:!F $QrTlF233Ke2::"V^FF!Z%/&8F   F7"(3=; 	,kG+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   sT    SN+KNN$$%%%%W  	r   r   r   NNN)r   r   r   r   r   r"   r   r   r   r   r   r   r      sc        6 6   R R R# # #J    r   r   __main__r   r   c                     t          |||||          } ||           }t          d|j        |j        |j        |j        |j        |||k    rdpdfz             d S )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(   r9   rs	            r   trT   ^   s    
6*[
G
GAaDDUXYX`bcbgijiprsrz|}  }E  FG  IJ  LM  IM  IV  RV  I_  Z_  X`  `  	a  	a  	a  	a  	ar   g33333G@z1,000.9   ,)r*   gG@z1,001.0z1,001r:   z1000.9z1001.01001g@@z1000.1gfffffD@z1000.6g;OC@z1000.4gC@1000rK   )__all____version__r   rer   compiler1   r/   r   r   rT   r   r   r   <module>r]      s  
 	)	 
				 	 	 	 	 	 	 	 rz)rz%@ @ @ @ @y @ @ @D Za a a a AfYqS))))Agic****AggbS))))AfWQ3''''AfXaAghqAgfRAfVAAfXaAghqAhxAgfQ! r   