o
    G1bF3                     @   s   d dl Z dZdZdZ	 eZe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 )"    Nz$Revision: 20 $z$Author: holtwick $z4$Date: 2007-10-09 12:58:24 +0200 (Di, 09 Okt 2007) $zho.cssc                 C   s   t | tkr	| gS | S N)typeListTypevalue r   /xhtml2pdf/w3c/cssSpecial.pytoList$   s   r	    )normalZitalicZoblique)r   z
small-capsi,  i  i  d      i  iX  i   i  )ZlightZlighterr   ZboldZbolderZ100Z200Z300Z400500Z600Z700Z800Z900   )
noneZhiddenZdottedZdashedZsolidZdoubleZgrooveZridgeZinsetZ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warningr   hasattrr   _borderStyleTable)r   widthstylecolorr   r   r   r   splitBorder   s   
r"   c                 C   s  g }| D ]}|rt d| |\}}}|}t|}|dkrt|}|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rt|p|}|rt|trd|v sd|v r|d||f n|d||f q|dkr3t
|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rt
|dkrJ|d  } } }}nCt
|dkr^|d  }}|d  }}n/t
|dkrt|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rt
|dkr@|d  } } }}nCt
|dkrT|d  }}|d  }}n/t
|dkrj|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rt|\}}}|d urP|d!||f |d"||f |d#||f |d$||f |d uru|d+||f |d,||f |d-||f |d.||f |d ur|d&||f |d'||f |d(||f |d)||f q|d0v r|d1d  }t|\}}}|d ur|d2| d3 ||f |d ur|d2| d4 ||f |d ur|d2| d5 ||f q|| q|r|rt d6d7d8d9 |D  	 |S )<NzCSS special  IN: %rZfontz
font-stylezfont-variantzfont-weightr   /z	font-sizezline-heightz	font-faceZ
background.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-styleZ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>z###z#->)r   debugr	   r   _styleTableappend_variantTable_weightTable
isinstancetupler   strprint
startswithr"   join)Zdeclarationsr1   ddr/   namer   lastZopartsr   ZfontSizeZslashZ
lineHeighttopZbottomleftrightr   r    r!   	directionr   r   r   parseSpecialRules   sJ  

























rC   c                 C   s   | S r   r   )srcr   r   r   
cleanupCSS  s   rE   )r   )loggingZ__reversion__
__author____date__r7   r   listr   	getLoggerr   r	   r2   r4   r5   r   r   r   r"   rC   rE   r   r   r   r   <module>   sb   
$&
 i