Current File : //lib/python3.6/site-packages/bs4/builder/__pycache__/_html5lib.cpython-36.pyc
3

6]0A�@sdgZddlZddlZddlmZmZmZmZddlm	Z	m
Z
ddlZddlm
Z
mZddlmZmZmZmZyddlmZdZWn2ek
r�Zzdd	lmZd
ZWYddZ[XnXGdd�de�ZGdd
�d
ej�ZGdd�de�ZGdd�dej�Z Gdd�de �Z!dS)�HTML5TreeBuilder�N)�
PERMISSIVE�HTML�HTML_5�HTMLTreeBuilder)�NamespacedAttribute�
whitespace_re)�
namespaces�prefixes)�Comment�Doctype�NavigableString�Tag)�_baseF)�baseTc@sBeZdZdZdZeeeegZddd�Z	dd�Z
dd	�Zd
d�ZdS)
rzUse html5lib to build a tree.�html5libNccs&||_|rtjd�|dddfVdS)NzjYou provided a value for exclude_encoding, but the html5lib tree builder doesn't support exclude_encoding.F)�user_specified_encoding�warnings�warn)�self�markuprZdocument_declared_encodingZexclude_encodings�r�/usr/lib/python3.6/_html5lib.py�prepare_markup0s
zHTML5TreeBuilder.prepare_markupcCs�|jjdk	rtjd�tj|jd�}t�}t|t	�sNt
rD|j|d<n
|j|d<|j|f|�}t|t	�rnd|_
n$|jjjd}t|t	�s�|j}||_
dS)Nz�You provided a value for parse_only, but the html5lib tree builder doesn't support parse_only. The entire document will be parsed.)ZtreeZoverride_encoding�encodingr)�soupZ
parse_onlyrrrZ
HTMLParser�create_treebuilder�dict�
isinstance�str�new_html5libr�parse�original_encodingZ	tokenizer�streamZcharEncoding�name)rr�parserZextra_kwargs�docr"rrr�feed=s




zHTML5TreeBuilder.feedcCst||j�|_|jS)N)�TreeBuilderForHtml5librZunderlying_builder)r�namespaceHTMLElementsrrrrXsz#HTML5TreeBuilder.create_treebuildercCsd|S)zSee `TreeBuilder`.z)<html><head></head><body>%s</body></html>r)rZfragmentrrr�test_fragment_to_document]sz*HTML5TreeBuilder.test_fragment_to_document)NN)
�__name__�
__module__�__qualname__�__doc__�NAMErrrZfeaturesrr'rr*rrrrr)s
csfeZdZd�fdd�	Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Z�Z
S)r(Ncs8|r||_nddlm}|dd�|_tt|�j|�dS)Nr)�
BeautifulSoup�zhtml.parser)r�bs4r0�superr(�__init__)rr)rr0)�	__class__rrr4ds
zTreeBuilderForHtml5lib.__init__cCs|jj�t|j|jd�S)N)r�reset�Element)rrrr�
documentClassls
z$TreeBuilderForHtml5lib.documentClasscCs6|d}|d}|d}tj|||�}|jj|�dS)Nr$�publicId�systemId)rZfor_name_and_idsr�object_was_parsed)r�tokenr$r9r:Zdoctyperrr�
insertDoctypeps
z$TreeBuilderForHtml5lib.insertDoctypecCs|jj||�}t||j|�S)N)r�new_tagr7)rr$�	namespace�tagrrr�elementClassxsz#TreeBuilderForHtml5lib.elementClasscCstt|�|j�S)N)�TextNoderr)r�datarrr�commentClass|sz#TreeBuilderForHtml5lib.commentClasscCs0ddlm}|dd�|_d|j_t|j|jd�S)Nr)r0r1zhtml.parserz[document_fragment])r2r0rr$r7)rr0rrr�
fragmentClasssz$TreeBuilderForHtml5lib.fragmentClasscCs|jj|j�dS)N)r�append�element)r�noderrr�appendChild�sz"TreeBuilderForHtml5lib.appendChildcCs|jS)N)r)rrrr�getDocument�sz"TreeBuilderForHtml5lib.getDocumentcCstjj|�jS)N)�treebuilder_base�TreeBuilder�getFragmentrG)rrrrrM�sz"TreeBuilderForHtml5lib.getFragmentcsBddlm�g�tjd��d����fdd�	��|d�dj��S)Nr)r0z8^(.*?)(?: PUBLIC "(.*?)"(?: "(.*?)")?| SYSTEM "(.*?)")?$c	s�t|��r
t|t�r��j|�}|r�|jd�}|jdkrx|jd�pBd}|jd�pZ|jd�pZd}�jdd||||f�q��jdd||f�n�jd	d|f��nHt|t�r̈jd
d||f��n$t|t�r�jdd||f��n|j�rdt	|j|j
f}n|j
}�jd
d||f�|j�r�g}x`t|jj
��D]N\}}t|t��rndt	|j|j
f}t|t��r�dj|�}|j||f��qFWx2t|�D]&\}}�jdd|d||f��q�W|d7}x|jD]}�||��q�WdS)N��r1��z|%s<!DOCTYPE %s "%s" "%s">� z|%s<!DOCTYPE %s>z|%s<!DOCTYPE >z|%s<!-- %s -->z|%s"%s"z%s %sz|%s<%s>z
|%s%s="%s")rr�match�group�	lastindexrFrr
r?r
r$�attrs�list�itemsr�join�sortedZchildren)	rG�indent�mr$r9r:�
attributes�value�child)r0�
doctype_re�rv�serializeElementrrrb�sD








"z?TreeBuilderForHtml5lib.testSerializer.<locals>.serializeElement�
)r)r2r0�re�compilerY)rrGr)r0r`rarbr�testSerializer�s
)
z%TreeBuilderForHtml5lib.testSerializer)N)r+r,r-r4r8r=rArDrErIrJrMrf�
__classcell__rr)r5rr(bsr(c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�AttrListcCs||_t|jj�|_dS)N)rGrrV)rrGrrrr4�szAttrList.__init__cCst|jj��j�S)N)rWrVrX�__iter__)rrrrri�szAttrList.__iter__cCsPtj}||dks.|jj|krB|||jjkrBt|t�sBtj|�}||j|<dS)N�*)rZcdata_list_attributesrGr$rrWr�split)rr$r^Z	list_attrrrr�__setitem__�s

zAttrList.__setitem__cCst|jj��S)N)rWrVrX)rrrrrX�szAttrList.itemscCst|jj��S)N)rWrV�keys)rrrrrm�sz
AttrList.keyscCs
t|j�S)N)�lenrV)rrrr�__len__�szAttrList.__len__cCs
|j|S)N)rV)rr$rrr�__getitem__�szAttrList.__getitem__cCs|t|jj��kS)N)rWrVrm)rr$rrr�__contains__�szAttrList.__contains__N)r+r,r-r4rirlrXrmrorprqrrrrrh�srhc@sxeZdZdd�Zdd�Zdd�Zdd�Zeee�Zdd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zee�Zd	S)r7cCs&tjj||j�||_||_||_dS)N)rK�Noder4r$rGrr?)rrGrr?rrrr4�szElement.__init__cCs(d}}t|t�r|}}n:t|t�r,|}n*|jjtkrJ|j}}||_n|j}||_t|t�rv|jdk	rv|jj�|r�|jjr�|jjdjtkr�|jjd}|j	j
||�}|j|�||j	_n`t|t�r�|j	j
|�}|jjr�|jj
d�}n |jjdk	�r
|j	j
�}n|j}|j	j||j|d�dS)NrNF)�parent�most_recent_element���ru)rrrrGr5r
rs�extract�contentsr�
new_string�replace_withZ_most_recent_element�_last_descendant�next_elementr;)rrHZstring_childr_Zold_elementZnew_elementrtrrrrI�s8







zElement.appendChildcCst|jt�riSt|j�S)N)rrGrrh)rrrr�
getAttributesszElement.getAttributescCs�|dk	r�t|�dkr�g}x8t|j��D](\}}t|t�r&t|�}||=|||<q&W|jjj|j	|�x"t|j��D]\}}||j
|<qrW|jjj|j
�dS)Nr)rnrWrXr�tuplerrZbuilderZ$_replace_cdata_list_attribute_valuesr$rGZset_up_substitutions)rr]Zconverted_attributesr$r^�new_namerrr�
setAttributes!s

zElement.setAttributesNcCs4t|jj|�|j�}|r&|j||�n
|j|�dS)N)rBrrx�insertBeforerI)rrCr��textrrr�
insertText9szElement.insertTextcCs�|jj|j�}|jjtkrf|jjrf|jj|djtkrf|jj|d}|jj||j�}|j|�n|jj||j�||_	dS)NrN)
rG�indexr5r
rwrrxry�insertrs)rrHZrefNoder�Zold_nodeZnew_strrrrr�@szElement.insertBeforecCs|jj�dS)N)rGrv)rrHrrr�removeChildLszElement.removeChildcCs�|j}|j}|j}|jdd�}t|j�dkr>|jd}|j}n
d}|j}|j}t|�dkr�|d}	|rn||	_n||	_||	_|r�|	|_n|	|_|r�|	|_|djdd�}
||
_|r�|
|_d|
_x|D]}||_|jj	|�q�Wg|_||_dS)z1Move all of this tag's children into another tag.FrrNNTruru)
rGZnext_siblingrzrnrwr{Zprevious_elementZprevious_siblingrsrF)rZ
new_parentrGZnew_parent_elementZfinal_next_elementZnew_parents_last_descendantZnew_parents_last_childZ(new_parents_last_descendant_next_elementZ	to_appendZfirst_childZlast_childs_last_descendantr_rrr�reparentChildrenOs>

zElement.reparentChildrencCsF|jj|jj|j�}t||j|j�}x|jD]\}}||j|<q,W|S)N)rr>rGr$r?r7r])rr@rH�keyr^rrr�	cloneNode�s
zElement.cloneNodecCs|jjS)N)rGrw)rrrr�
hasContent�szElement.hasContentcCs(|jdkrtd|jfS|j|jfSdS)NZhtml)r?r	r$)rrrr�getNameTuple�s
zElement.getNameTuple)N)r+r,r-r4rIr|r�propertyr]r�r�r�r�r�r�r�Z	nameTuplerrrrr7�s6

Br7c@seZdZdd�Zdd�ZdS)rBcCstjj|d�||_||_dS)N)rKrrr4rGr)rrGrrrrr4�szTextNode.__init__cCst�dS)N)�NotImplementedError)rrrrr��szTextNode.cloneNodeN)r+r,r-r4r�rrrrrB�srB)"�__all__rrdZbs4.builderrrrrZbs4.elementrrrZhtml5lib.constantsr	r
rrr
rZhtml5lib.treebuildersrrKr �ImportError�errrLr(�objectrhrrr7rBrrrr�<module>s&9_E
Page not found – Hello World !