U
    ?°e¶  ã                   @   s"   d dl mZ G dd„ dejƒZdS )é   )Úcssc                   @   s°   e Zd ZdZdZdd„ dd„ dd„ dd„ dd„ d	d„ d
œZd'dd„Zdd„ Zdd„ Ze	fdd„Z
dd„ Zdd„ Zdd„ Zd(dd„Zd)dd„Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ ZdS )*ÚCSSDOMElementInterfacezNAn implementation of css.CSSElementInterfaceAbstract for xml.dom Element NodesNc                 C   s   t |  ¡ ƒ S ©N©ÚboolÚgetPreviousSibling©Úself© r
   úH/tmp/pip-unpacked-wheel-35p66c5k/xhtml2pdf/w3c/cssDOMElementInterface.pyÚ<lambda>   ó    zCSSDOMElementInterface.<lambda>c                 C   s   t |  ¡ ƒS r   r   r   r
   r
   r   r      r   c                 C   s   t |  ¡ ƒ S r   ©r   ÚgetNextSiblingr   r
   r
   r   r   "   r   c                 C   s   t |  ¡ ƒS r   r   r   r
   r
   r   r   $   r   c                 C   s   t |  ¡ ƒ ot |  ¡ ƒ S r   ©r   r   r   r   r
   r
   r   r   '   r   c                 C   s   t |  ¡ ƒpt |  ¡ ƒS r   r   r   r
   r
   r   r   )   r   )zfirst-childznot-first-childz
last-childznot-last-childzmiddle-childznot-middle-childc                 C   s   || _ |d k	r|  |¡ d S r   )Ú
domElementÚonCSSParserVisit)r	   r   Ú	cssParserr
   r
   r   Ú__init__3   s    zCSSDOMElementInterface.__init__c                 C   s$   |   ¡ }|r | |¡}|  |¡ d S r   )ÚgetStyleAttrZparseInlineÚsetInlineStyle)r	   r   ZstyleSrcÚstyler
   r
   r   r   :   s    
z'CSSDOMElementInterface.onCSSParserVisitc                 C   s8   |\}}|d| j jfkrdS |dkr(dS || j jkS d S )NÚ*F)NÚ r   T)r   ÚtagNameZnamespaceURI)r	   Znamespace_tagNameÚ	namespacer   r
   r
   r   ÚmatchesNodeC   s    z"CSSDOMElementInterface.matchesNodec                 C   s$   | j j |¡}|d k	r|jS |S d S r   )r   Ú
attributesÚgetÚvalue)r	   ÚnameÚdefaultÚ	attrValuer
   r
   r   ÚgetAttrN   s    zCSSDOMElementInterface.getAttrc                 C   s   |   dd¡S )NÚidr   ©r#   r   r
   r
   r   Ú	getIdAttrV   s    z CSSDOMElementInterface.getIdAttrc                 C   s   |   dd¡S )NÚclassr   r%   r   r
   r
   r   ÚgetClassAttrZ   s    z#CSSDOMElementInterface.getClassAttrc                 C   s   |   dd ¡S )Nr   r%   r   r
   r
   r   r   ^   s    z#CSSDOMElementInterface.getStyleAttrr
   c                 C   s   | j  |dd„ ¡}|| ƒS )Nc                 S   s   dS )NFr
   r   r
   r
   r   r   c   r   z6CSSDOMElementInterface.inPseudoState.<locals>.<lambda>)Ú_pseudoStateHandlerLookupr   )r	   r    ÚparamsÚhandlerr
   r
   r   ÚinPseudoStateb   s    z$CSSDOMElementInterface.inPseudoStateFc                 c   s@   | j }| j}|s|j}|d k	r<|j|jkr<||ƒV  |j}qd S r   )Ú	__class__r   Z
parentNodeÚnodeTypeÚELEMENT_NODE)r	   ZincludeSelfÚklassÚcurrentr
   r
   r   ÚiterXMLParentsg   s    
z%CSSDOMElementInterface.iterXMLParentsc                 C   s(   | j j}|r$|j|jkr|S |j}qd S r   )r   ZpreviousSiblingr.   r/   ©r	   Zsiblingr
   r
   r   r   q   s    z)CSSDOMElementInterface.getPreviousSiblingc                 C   s(   | j j}|r$|j|jkr|S |j}qd S r   )r   ZnextSiblingr.   r/   r3   r
   r
   r   r   {   s    z%CSSDOMElementInterface.getNextSiblingc                 C   s   | j S r   ©r   r   r
   r
   r   ÚgetInlineStyle…   s    z%CSSDOMElementInterface.getInlineStylec                 C   s
   || _ d S r   r4   )r	   r   r
   r
   r   r   ‰   s    z%CSSDOMElementInterface.setInlineStyle)N)r
   )F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r)   r   r   r   ÚNotImplementedr#   r&   r(   r   r,   r2   r   r   r5   r   r
   r
   r
   r   r      s,   ò
	




r   N)r   r   ZCSSElementInterfaceAbstractr   r
   r
   r
   r   Ú<module>   s   