o
    ôSk[T  ã                   @   s.   d dl mZ ddlmZ G dd„ dejƒZdS )é    )Úabsolute_importé   )Ú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   ó   t |  ¡ ƒ S ©N©ÚboolÚgetPreviousSibling©Úself© r   úV/var/www/html/env/lib/python3.10/site-packages/xhtml2pdf/w3c/cssDOMElementInterface.pyÚ<lambda>   ó    zCSSDOMElementInterface.<lambda>c                 C   ó   t |  ¡ ƒS r   r   r   r   r   r   r       ó    c                 C   r   r   ©r	   ÚgetNextSiblingr   r   r   r   r   #   r   c                 C   r   r   r   r   r   r   r   r   %   r   c                 C   s   t |  ¡ ƒ ot |  ¡ ƒ S r   ©r	   r
   r   r   r   r   r   r   (   s    c                 C   s   t |  ¡ ƒpt |  ¡ ƒS r   r   r   r   r   r   r   *   s    )zfirst-childznot-first-childz
last-childznot-last-childzmiddle-childznot-middle-childc                 C   s    || _ |d ur|  |¡ d S d S r   )Ú
domElementÚonCSSParserVisit)r   r   Ú	cssParserr   r   r   Ú__init__4   s   ÿzCSSDOMElementInterface.__init__c                 C   s(   |   ¡ }|r| |¡}|  |¡ d S d S r   )ÚgetStyleAttrÚparseInlineÚsetInlineStyle)r   r   ÚstyleSrcÚstyler   r   r   r   ;   s
   
þz'CSSDOMElementInterface.onCSSParserVisitc                 C   s4   |\}}|d| j jfvrdS |dv rdS || j jkS )NÚ*F)NÚ r   T)r   ÚtagNameÚnamespaceURI)r   Únamespace_tagNameÚ	namespacer!   r   r   r   ÚmatchesNodeD   s   z"CSSDOMElementInterface.matchesNodec                 C   s    | j j |¡}|d ur|jS |S r   )r   Ú
attributesÚgetÚvalue)r   ÚnameÚdefaultÚ	attrValuer   r   r   ÚgetAttrO   s   zCSSDOMElementInterface.getAttrc                 C   ó   |   dd¡S )NÚidr    ©r,   r   r   r   r   Ú	getIdAttrW   ó   z CSSDOMElementInterface.getIdAttrc                 C   r-   )NÚclassr    r/   r   r   r   r   ÚgetClassAttr[   r1   z#CSSDOMElementInterface.getClassAttrc                 C   s   |   dd ¡S )Nr   r/   r   r   r   r   r   _   r1   z#CSSDOMElementInterface.getStyleAttrr   c                 C   s   | j  |dd„ ¡}|| ƒS )Nc                 S   s   dS )NFr   r   r   r   r   r   d   s    z6CSSDOMElementInterface.inPseudoState.<locals>.<lambda>)Ú_pseudoStateHandlerLookupr'   )r   r)   ÚparamsÚhandlerr   r   r   ÚinPseudoStatec   s   z$CSSDOMElementInterface.inPseudoStateFc                 c   s`   � | j }| j}|s|j}|d ur*|j|jkr.||ƒV  |j}|d ur,|j|jksd S d S d S d S r   )Ú	__class__r   Ú
parentNodeÚnodeTypeÚELEMENT_NODE)r   ÚincludeSelfÚklassÚcurrentr   r   r   ÚiterXMLParentsh   s   €
$þz%CSSDOMElementInterface.iterXMLParentsc                 C   ó*   | j j}|r|j|jkr|S |j}|sd S r   )r   ÚpreviousSiblingr:   r;   ©r   Úsiblingr   r   r   r
   r   ó   üz)CSSDOMElementInterface.getPreviousSiblingc                 C   r@   r   )r   ÚnextSiblingr:   r;   rB   r   r   r   r   |   rD   z%CSSDOMElementInterface.getNextSiblingc                 C   s   | j S r   ©r   r   r   r   r   ÚgetInlineStyle†   s   z%CSSDOMElementInterface.getInlineStylec                 C   s
   || _ d S r   rF   )r   r   r   r   r   r   Š   s   
z%CSSDOMElementInterface.setInlineStyler   )r   )F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r4   r   r   r%   ÚNotImplementedr,   r0   r3   r   r7   r?   r
   r   rG   r   r   r   r   r   r      s.    ò
	




r   N)Ú
__future__r   r    r   ÚCSSElementInterfaceAbstractr   r   r   r   r   Ú<module>   s   
