o
    	'f                     @   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   O/home/ubuntu/flask/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    

