o
    üÞhž  ã                   @   sV   d Z ddlmZmZ ddlmZmZ G dd„ dƒZG dd„ dƒZG dd	„ d	ej	ƒZ	d
S )zù
Legacy module - don't use in new code!

html5lib now has its own proper implementation.

This module implements a tree builder for html5lib that generates lxml
html element trees.  This module uses camelCase as it follows the
html5lib style guide.
é    )Ú_baseÚetree)Úhtmlr   c                   @   s   e Zd Zdd„ ZdS )ÚDocumentTypec                 C   s   || _ || _|| _d S ©N)ÚnameÚpublicIdÚsystemId)Úselfr   r   r	   © r   úW/var/www/html/premium_crap/venv/lib/python3.10/site-packages/lxml/html/_html5builder.pyÚ__init__   s   
zDocumentType.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s    r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚDocumentc                 C   s   d | _ g | _d S r   )Ú_elementTreeÚ
childNodes©r
   r   r   r   r      s   
zDocument.__init__c                 C   s   | j  ¡  |j¡ d S r   )r   ÚgetrootÚaddnextÚ_element)r
   Úelementr   r   r   ÚappendChild   s   zDocument.appendChildN)r   r   r   r   r   r   r   r   r   r      s    r   c                   @   sZ   e Zd ZeZeZdZdZeZ	dd„ Z
dd„ Zdd„ Zdd	„ Zd
d„ Zddd„Zdd„ ZdS )ÚTreeBuilderNc                 O   sJ   t jtdd�}t jtdd�}|j| _|j| _tj	j
| g|¢R i |¤Ž d S )NF)ÚfullTree)Úetree_buildersÚgetETreeModuler   r   ÚElementÚelementClassÚCommentÚcommentClassr   r   r   )r
   ÚargsÚkwargsÚhtml_builderÚetree_builderr   r   r   r   '   s
   zTreeBuilder.__init__c                 C   s"   t j | ¡ d| _g | _d | _d S )NF)r   r   ÚresetÚrootInsertedÚinitialCommentsÚdoctyper   r   r   r   r&   .   s   
zTreeBuilder.resetc                 C   s   | j jS r   )Údocumentr   r   r   r   r   ÚgetDocument4   s   zTreeBuilder.getDocumentc                 C   sF   g }| j d j}|jr| |j¡ | | ¡ ¡ |jr!| |j¡ |S )Nr   )ÚopenElementsr   ÚtextÚappendÚextendÚgetchildrenÚtail)r
   Úfragmentr   r   r   r   ÚgetFragment7   s   zTreeBuilder.getFragmentc                 C   s   |   |||¡}|| _d S r   )ÚdoctypeClassr)   )r
   r   r   r	   r)   r   r   r   ÚinsertDoctypeA   s   
zTreeBuilder.insertDoctypec                 C   s*   | j s| j |¡ d S tj | ||¡ d S r   )r'   r(   r.   r   r   ÚinsertComment)r
   ÚdataÚparentr   r   r   r6   E   s   zTreeBuilder.insertCommentc                 C   sà   g }| j r0| j jr0| d| j j ¡ | j jd us| j jd ur+| d| j j| j jf ¡ | d¡ | d¡ t d |¡¡}| jD ]
}| 	t
 |¡¡ q@|  ¡ | _| ¡ | j_|  |¡}||_| jj |¡ | j |¡ d| _d S )Nz<!DOCTYPE %sz PUBLIC "%s" "%s"ú>z<html></html>Ú T)r)   r   r.   r   r	   r   Ú
fromstringÚjoinr(   Úaddpreviousr   r    ÚdocumentClassr*   Úgetroottreer   r   r   r   r,   r'   )r
   r   ÚbufÚrootÚcommentÚroot_elementr   r   r   Ú
insertRootK   s&   ÿ





zTreeBuilder.insertRootr   )r   r   r   r   r>   r   r4   r   r!   ÚfragmentClassr   r&   r+   r3   r5   r6   rD   r   r   r   r   r       s    

r   N)
Ú__doc__Úhtml5lib.treebuildersr   r   r   Úlxmlr   r   r   r   r   r   r   r   Ú<module>   s    

