File: //proc/self/root/proc/thread-self/root/lib64/python3.9/html/__pycache__/parser.cpython-39.opt-1.pyc
a
WpWjrW � @ s� d Z ddlZddlZddlmZ dgZe�d�Ze�d�Ze�d�Z e�d�Z
e�d �Ze�d
�Ze�d�Z
e�d�Ze�d
�Ze�d�Ze�dej�Ze�dej�Ze�dej�Ze�d�Ze�d�ZG dd� dej�ZdS )zA parser for HTML and XHTML.� N)�unescape�
HTMLParserz[&<]z
&[a-zA-Z#]z%&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]z)&#(?:[0-9]+|[xX][0-9a-fA-F]+)[^0-9a-fA-F]z <[a-zA-Z]z
</[a-zA-Z]�>z--!?>z-?>z0([a-zA-Z][^\t\n\r\f />]*)(?:[\t\n\r\f ]|/(?!>))*a{
(
(?<=['"\t\n\r\f /])[^\t\n\r\f />][^\t\n\r\f /=>]* # attribute name
)
([\t\n\r\f ]*=[\t\n\r\f ]* # value indicator
('[^']*' # LITA-enclosed value
|"[^"]*" # LIT-enclosed value
|(?!['"])[^>\t\n\r\f ]* # bare value
)
)?
(?:[\t\n\r\f ]|/(?!>))* # possibly followed by a space
a
[a-zA-Z][^\t\n\r\f />]* # tag name
[\t\n\r\f /]* # optional whitespace before attribute name
(?:(?<=['"\t\n\r\f /])[^\t\n\r\f />][^\t\n\r\f /=>]* # attribute name
(?:[\t\n\r\f ]*=[\t\n\r\f ]* # value indicator
(?:'[^']*' # LITA-enclosed value
|"[^"]*" # LIT-enclosed value
|(?!['"])[^>\t\n\r\f ]* # bare value
)
)?
[\t\n\r\f /]* # possibly followed by a space
)*
>?
aF
<[a-zA-Z][^\t\n\r\f />\x00]* # tag name
(?:[\s/]* # optional whitespace before attribute name
(?:(?<=['"\s/])[^\s/>][^\s/=>]* # attribute name
(?:\s*=+\s* # value indicator
(?:'[^']*' # LITA-enclosed value
|"[^"]*" # LIT-enclosed value
|(?!['"])[^>\s]* # bare value
)
\s* # possibly followed by a space
)?(?:\s|/(?!>))*
)*
)?
\s* # trailing whitespace
z#</\s*([a-zA-Z][-.a-zA-Z0-9:_]*)\s*>c @ s e Zd ZdZdZdZddd�dd�Zd d
� Zdd� Zd
d� Z dZ
dd� Zdd�dd�Zdd� Z
d>dd�Zdd� Zdd� Zd?dd�Zd@d d!�Zd"d#� Zd$d%� Zd&d'� Zd(d)� Zd*d+� Zd,d-� Zd.d/� Zd0d1� Zd2d3� Zd4d5� Zd6d7� Zd8d9� Zd:d;� Zd<d=� Z dS )Ar aE Find tags and other markup and call handler functions.
Usage:
p = HTMLParser()
p.feed(data)
...
p.close()
Start tags are handled by calling self.handle_starttag() or
self.handle_startendtag(); end tags by self.handle_endtag(). The
data between tags is passed from the parser to the derived class
by calling self.handle_data() with the data as argument (the data
may be split up in arbitrary chunks). If convert_charrefs is
True the character references are converted automatically to the
corresponding Unicode character (and self.handle_data() is no
longer split in chunks), otherwise they are passed by calling
self.handle_entityref() or self.handle_charref() with the string
containing respectively the named or numeric reference as the
argument.
)Zscript�styleZxmpZiframeZnoembedZnoframes)Ztextarea�titleTF)�convert_charrefs� scriptingc C s || _ || _| �� dS )az Initialize and reset this instance.
If convert_charrefs is true (the default), all character references
are automatically converted to the corresponding Unicode characters.
If *scripting* is false (the default), the content of the
``noscript`` element is parsed normally; if it's true,
it's returned as is without being parsed.
N)r r �reset)�selfr r � r �#/usr/lib64/python3.9/html/parser.py�__init__v s
zHTMLParser.__init__c C sF d| _ d| _t| _d| _d| _d| _g | _d| _d| _ t
j�| � dS )z1Reset this instance. Loses all unprocessed data.� z???NTr � )
�rawdata�lasttag�interesting_normal�interesting�
cdata_elem�_support_cdata�
_escapable�_pending�_pending_len�_parse_threshold�_markupbase�
ParserBaser �r
r r r r � s zHTMLParser.resetc C s� | j t|�7 _ | j | jk r,| j�|� n~| jsB| j|7 _n,| j�|� | jd�| j�7 _| j�� d| _ t| j�}| �d� t| j�|k r�d| _nt| j�| _dS )z�Feed data to the parser.
Call this as often as you want, with as little or as much text
as you want (may include '\n').
r r r N) r �lenr r �appendr �join�clear�goahead)r
�data�nr r r �feed� s
zHTMLParser.feedc C s: | j r,| jd�| j �7 _| j �� d| _| �d� dS )zHandle any buffered data.r r r N)r r r r r r! r r r r �close� s
zHTMLParser.closeNc C s | j S )z)Return full source of start tag: '<...>'.)�_HTMLParser__starttag_textr r r r �get_starttag_text� s zHTMLParser.get_starttag_text�� escapablec C sp |� � | _|| _| jdkr(t�d�| _nD|rP| jsPt�d| j tjtjB �| _nt�d| j tjtjB �| _d S )N� plaintextz\Zz&|</%s(?=[\t\n\r\f />])z</%s(?=[\t\n\r\f />])) �lowerr r �re�compiler r �
IGNORECASE�ASCII)r
�elemr) r r r �set_cdata_mode� s
�
�zHTMLParser.set_cdata_modec C s t | _d | _d| _d S )NT)r r r r r r r r �clear_cdata_mode� s zHTMLParser.clear_cdata_modec C s
|| _ dS )a Enable or disable support of the CDATA sections.
If enabled, "<[CDATA[" starts a CDATA section which ends with "]]>".
If disabled, "<[CDATA[" starts a bogus comments which ends with ">".
This method is not called by default. Its purpose is to be called
in custom handle_starttag() and handle_endtag() methods, with
value that depends on the adjusted current node.
See https://html.spec.whatwg.org/multipage/parsing.html#markup-declaration-open-state
for details.
N)r )r
�flagr r r �_set_support_cdata� s zHTMLParser._set_support_cdatac C s4 | j }d}t|�}||k �r�| jrv| jsv|�d|�}|dk r�|�dt||d ��}|dkrpt�d�� ||�sp�q�|}n*| j
� ||�}|r�|�� }n| jr��q�|}||k r�| jr�| jr�| �
t|||� �� n| �
|||� � | �||�}||kr��q�|j}|d|��r<t�||��r"| �|�} n�|d|��r:| �|�} nt|d|��rR| �|�} n\|d|��rj| �|�} nD|d |��r�| �|�} n,|d
|k �s�|�r�| �
d� |d
} n�q�| dk �r.|�sq�t�||��rԐnV|d|��r$|d |k�r�| �
d� n&t�||��r
n| �||d d � � �n|d|��r||}dD ]*}
|�|
|d
��r8|t|
�8 } �qd�q8| �||d
|� � n�|d|��r�| j�r�| �||d d � � n�|||d � �� dk�r�| �||d d � � nP|d |��r�| �||d d � � n,|d|��r"| �||d d � � nt d��|} | �|| �}q|d|��r�t!�||�}|�r�|�"� dd� }| �#|� |�$� } |d| d
��s�| d
} | �|| �}qn<d||d � v �r�| �
|||d � � | �||d �}�q�q|d|�rt%�||�}|�r@|�"d
�}| �&|� |�$� } |d| d
��s2| d
} | �|| �}qt'�||�}|�r�|�r�|�"� ||d � k�r�|�$� } | |k�r�|} | �||d
�}�q�n.|d
|k �r�| �
d� | �||d
�}n�q�qq|�r"||k �r"| j�r| j�r| �
t|||� �� n| �
|||� � | �||�}||d � | _ d S )Nr �<�&�"