o
    ôSk[¥4  ã                   @   s²   d Z dZdZ	 eZeZddlZe d¡Z	dd„ Z
dddd	œZddd
œZdddddddddddddddœZdddddddddddœ
Z	 dd„ Zdd„ Zdd„ Zd!dd„Zdd „ ZdS )"z$Revision: 20 $z$Author: holtwick $z4$Date: 2007-10-09 12:58:24 +0200 (Di, 09 Okt 2007) $é    Nzho.cssc                 C   s   t | ƒtkr	| gS | S ©N)ÚtypeÚListType©Úvalue© r   úJ/var/www/html/env/lib/python3.10/site-packages/xhtml2pdf/w3c/cssSpecial.pyÚtoList3   s   r	   Ú )ÚnormalÚitalicÚoblique)r   z
small-capsi,  i�  i¼  éd   éÈ   iô  iX  i   i„  )ÚlightÚlighterr   ÚboldÚbolderÚ100Ú200Ú300Ú400Ú500Ú600Ú700Ú800Ú900é   )
ÚnoneÚhiddenÚdottedÚdashedÚsolidÚdoubleÚgrooveÚridgeÚinsetÚoutsetc                 C   s   | r	|   d¡}|S d }|S )Nr   )Úpop)ÚpartsÚpartr   r   r   ÚgetNextPartš   s
   
ÿr+   c                 C   s   | ot | ƒtu p| dkS )NÚ0)r   Ú	TupleTyper   r   r   r   ÚisSize¢   s   r.   c                 C   sf   d } }}t | ƒdkrt d| ¡ | D ]}t|ƒr|}qt|dƒr+| ¡ tv r+|}q|}q|||fS )z†
    The order of the elements seems to be of no importance:

    http://www.w3.org/TR/CSS21/box.html#border-shorthand-properties
    Né   z$To many elements for border style %rÚlower)ÚlenÚlogÚwarnr.   Úhasattrr0   Ú_borderStyleTable)r)   ÚwidthÚstyleÚcolorr*   r   r   r   ÚsplitBorder¦   s   
r9   c                 C   s  g }| D �]ä}|rt  d|¡ |\}}}|}t|ƒ}|dkr�t|ƒ}|r4|tv r4| d||f¡ t|ƒ}|rF|tv rF| d||f¡ t|ƒ}|rX|tv rX| d||f¡ t|ƒ}t|t	ƒrt
|ƒdkr|\}	}
}|
dksnJ ‚| d|	|f¡ | d	||f¡ n| d||f¡ | d
||f¡ q|dkr¾t|ƒp™|}|r¼t|dƒr´td|v ƒs«d|v r´| d||f¡ n| d||f¡ 	 q|dk�r6t
|ƒdkrÔ|d  } } }}nAt
|ƒdkrç|d  }}|d  }}n.t
|ƒdkrü|d }|d  }}|d }nt
|ƒdk�r|d }|d }|d }|d }nq| d||f¡ | d||f¡ | d||f¡ | d||f¡ q|dk�r±t
|ƒdk�rM|d  } } }}nCt
|ƒdk�ra|d  }}|d  }}n/t
|ƒdk�rw|d }|d  }}|d }nt
|ƒdk�r�|d }|d }|d }|d }nq| d||f¡ | d||f¡ | d||f¡ | d ||f¡ q|d!k�r,t
|ƒdk�rÈ|d  } } }}nCt
|ƒdk�rÜ|d  }}|d  }}n/t
|ƒdk�rò|d }|d  }}|d }nt
|ƒdk�r
|d }|d }|d }|d }nq| d"||f¡ | d#||f¡ | d$||f¡ | d%||f¡ q|d&k�r§t
|ƒdk�rC|d  } } }}nCt
|ƒdk�rW|d  }}|d  }}n/t
|ƒdk�rm|d }|d  }}|d }nt
|ƒdk�r…|d }|d }|d }|d }nq| d'||f¡ | d(||f¡ | d)||f¡ | d*||f¡ q|d+k�r"t
|ƒdk�r¾|d  } } }}nCt
|ƒdk�rÒ|d  }}|d  }}n/t
|ƒdk�rè|d }|d  }}|d }nt
|ƒdk�r |d }|d }|d }|d }nq| d,||f¡ | d-||f¡ | d.||f¡ | d/||f¡ q|d0k�ržt|ƒ\}}}|d u�rS| d"||f¡ | d#||f¡ | d$||f¡ | d%||f¡ |d u�rx| d,||f¡ | d-||f¡ | d.||f¡ | d/||f¡ |d u�r�| d'||f¡ | d(||f¡ | d)||f¡ | d*||f¡ q|d1v �rä|d2d … }t|ƒ\}}}|d u�rÁ| d3| d4 ||f¡ |d u�rÒ| d3| d5 ||f¡ |d u�rã| d3| d6 ||f¡ q| |¡ q|�rþ|�rþt  d7d8 d9d:„ |D ƒ¡¡ 	 |S );NzCSS special  IN: %rÚfontz
font-stylezfont-variantzfont-weightr/   ú/z	font-sizezline-heightz	font-faceÚ
backgroundÚ__iter__Ú.zdata:zbackground-imagezbackground-colorr   ú~ÚurlÚmarginr   é   é   zmargin-leftzmargin-rightz
margin-topzmargin-bottomÚpaddingzpadding-leftzpadding-rightzpadding-topzpadding-bottomzborder-widthzborder-left-widthzborder-right-widthzborder-top-widthzborder-bottom-widthzborder-colorzborder-left-colorzborder-right-colorzborder-top-colorzborder-bottom-colorzborder-stylezborder-left-stylezborder-right-stylezborder-top-stylezborder-bottom-styleÚborder)z
border-topzborder-bottomzborder-leftzborder-righté   zborder-z-widthz-stylez-colorzCSS special OUT:
%sÚ
c                 S   s   g | ]}t |ƒ‘qS r   )Úrepr)Ú.0Údr   r   r   Ú
<listcomp>�  s    z%parseSpecialRules.<locals>.<listcomp>)r2   Údebugr	   r+   Ú_styleTableÚappendÚ_variantTableÚ_weightTableÚ
isinstanceÚtupler1   r4   r   ÚprintÚ
startswithr9   Újoin)ÚdeclarationsrL   ÚddrJ   Únamer)   ÚlastÚopartsr*   ÚfontSizeÚslashÚ
lineHeightÚtopÚbottomÚleftÚrightr6   r7   r8   Ú	directionr   r   r   ÚparseSpecialRulesÄ   sJ  





















€



€rc   c                 C   s   | S r   r   )Úsrcr   r   r   Ú
cleanupCSS©  s   re   )r   )Ú__reversion__Ú
__author__Ú__date__rR   r-   Úlistr   ÚloggingÚ	getLoggerr2   r	   rM   rO   rP   r5   r+   r.   r9   rc   re   r   r   r   r   Ú<module>   sb   
ýþñ$ö&
 f