
    Ng                         d Z ddlmZmZ ddlmZmZ  G d d          Z G d d          Z G 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                       e Zd Zd ZdS )DocumentTypec                 0    || _         || _        || _        d S N)namepublicIdsystemId)selfr
   r   r   s       S/var/www/html/ai-engine/env/lib/python3.11/site-packages/lxml/html/_html5builder.py__init__zDocumentType.__init__   s    	      N)__name__
__module____qualname__r    r   r   r   r      s#        ! ! ! ! !r   r   c                       e Zd Zd Zd ZdS )Documentc                 "    d | _         g | _        d S r	   )_elementTree
childNodesr   s    r   r   zDocument.__init__   s     r   c                 h    | j                                                             |j                   d S r	   )r   getrootaddnext_element)r   elements     r   appendChildzDocument.appendChild   s.    !!##++G,<=====r   N)r   r   r   r   r    r   r   r   r   r      s2          > > > > >r   r   c                   N    e Zd ZeZeZdZdZeZ	d Z
d Zd Zd Zd Zd	dZd ZdS )
TreeBuilderNc                     t          j        t          d          }t          j        t          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_builders        r   r   zTreeBuilder.__init__'   sl    %4TEJJJ&5eeLLL(0)1"49$999&99999r   c                 n    t           j                            |            d| _        g | _        d | _        d S )NF)r   r"   resetrootInsertedinitialCommentsdoctyper   s    r   r0   zTreeBuilder.reset.   s4    %%%!!r   c                     | j         j        S r	   )documentr   r   s    r   getDocumentzTreeBuilder.getDocument4   s    }))r   c                     g }| j         d         j        }|j        r|                    |j                   |                    |                                           |j        r|                    |j                   |S )Nr   )openElementsr   textappendextendgetchildrentail)r   fragmentr   s      r   getFragmentzTreeBuilder.getFragment7   sv    #A&/< 	*OOGL)))++--...< 	*OOGL)))r   c                 B    |                      |||          }|| _        d S r	   )doctypeClassr3   )r   r
   r   r   r3   s        r   insertDoctypezTreeBuilder.insertDoctypeA   s$    ##D(H==r   c                     | j         s| j                            |           d S t          j                            | ||           d S r	   )r1   r2   r:   r   r"   insertComment)r   dataparents      r   rD   zTreeBuilder.insertCommentE   sL      	@ ''-----++D$?????r   c                 .   g }| j         r| j         j        r|                    d| j         j        z             | j         j        | j         j        0|                    d| j         j        d| j         j        d           |                    d           |                    d           t          j        d                    |                    }| j        D ])}|	                    t          j        |                     *|                                 | _        |                                | j        _        |                     |          }||_        | j        j                            |           | j                            |           d| _        d S )	Nz<!DOCTYPE %sz	 PUBLIC "z" "">z<html></html> T)r3   r
   r:   r   r   r   
fromstringjoinr2   addpreviousr   r)   documentClassr5   getroottreer   r(   r   r   r8   r1   )r   r
   bufrootcommentroot_elements         r   
insertRootzTreeBuilder.insertRootK   s   < 	DL- 	JJ~(99:::|$0DL4I4U


$,2G2G2G26,2G2G2GI J J JJJsOOO

?###rwws||,, + 	5 	5GU]7334444 **,,%)%5%5%7%7" ((.. $ ''555  ... r   r	   )r   r   r   r   rN   r   rA   r(   r*   fragmentClassr   r0   r6   r?   rB   rD   rT   r   r   r   r"   r"       s        MLLLM: : :  * * *    @ @ @ @! ! ! ! !r   r"   N)
__doc__html5lib.treebuildersr   r   r%   lxmlr   r   r   r"   r   r   r   <module>rY      s     A @ @ @ @ @ @ @        ! ! ! ! ! ! ! !> > > > > > > >D! D! D! D! D!%# D! D! D! D! D!r   