Your IP : 3.135.236.134
B
� f9�@sVdZddlZe�d�jZe�d�jZe�d�Ze�d�Ze�d�Z[Gdd �d �Z dS)
z�Shared support for scanning document type declarations in HTML and XHTML.
This module is used as a foundation for the html.parser module. It has no
documented public API and should not be used directly.
�Nz[a-zA-Z][-_.a-zA-Z0-9]*\s*z(\'[^\']*\'|"[^"]*")\s*z--\s*>z ]\s*]\s*>z]\s*>c@s�eZdZdZdd�Zdd�Zdd�Zdd �Zd
d�ZdZ d
d�Z
d#dd�Zd$dd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"S)%�
ParserBaseziParser base class which provides some common support methods used
by the SGML/HTML and XHTML parsers.cCs|jtkrtd��dS)Nz)_markupbase.ParserBase must be subclassed)� __class__r�RuntimeError)�self�r�0/opt/alt/python37/lib64/python3.7/_markupbase.py�__init__s
zParserBase.__init__cCstd��dS)Nz.subclasses of ParserBase must override error())�NotImplementedError)r�messagerrr�error szParserBase.errorcCsd|_d|_dS)N�r)�lineno�offset)rrrr�reset$szParserBase.resetcCs|j|jfS)z&Return current line number and offset.)r
r)rrrr�getpos(szParserBase.getposcCsb||kr|S|j}|�d||�}|rN|j||_|�d||�}||d|_n|j|||_|S)N�
r)�rawdata�countr
�rindexr)r�i�jrZnlines�posrrr� updatepos0szParserBase.updatepos�c
Cs�|j}|d}|||d�dkr*|dS|||d�dkrBdSt|�}|||d�dkrh|�|�S||dkr~|�|�S|�||�\}}|dkr�|S|d kr�d
|_�x||k�r�||}|dk�r�||d|�}|d kr�|�|�n
|�|�|dS|dk�r&t||�}|�sdS|� �}n�|dk�rB|�||�\} }nt||jk�rX|d}n^|dk�r�|d k�r~|�
|d|�}n$|d
k�r�|�d|�n
|�d�n|�d||�|dkr�|Sq�WdS)N�r�>)�-r���z--�[rZdoctyperz"'Z4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ>�attlist�element�link�linktypez&unsupported '[' char in %s declarationz"unexpected '[' char in declarationz!unexpected %r char in declaration)r�len�
parse_comment�parse_marked_section�
_scan_name�_decl_othercharsZhandle_decl�unknown_decl�_declstringlit_match�end�_parse_doctype_subsetr)
rrrr�nZdecltype�c�data�m�namerrr�parse_declaration@sX
zParserBase.parse_declarationrcCs�|j}|�|d|�\}}|dkr&|S|dkr@t�||d�}n4|dkrZt�||d�}n|�d||d|��|s|dS|r�|�d�}|�||d|��|�d�S)N�r>�rcdata�temp�include�ignore�cdata>�else�if�endifz+unknown status keyword %r in marked sectionr) rr&�_markedsectionclose�search�_msmarkedsectioncloser�startr(r*)rr�reportrZsectNamer�matchrrrr%�s
zParserBase.parse_marked_sectioncCsj|j}|||d�dkr$|�d�t�||d�}|s<dS|r`|�d�}|�||d|��|�d�S)N�z<!--z"unexpected call to parse_comment()rr)rr�
_commentcloser<r>Zhandle_commentr*)rrr?rr@rrrrr$�s
zParserBase.parse_commentc
Cs4|j}t|�}|}�x||k�r.||}|dk�r4|||d�}|dkrNdS|dkrt|�||d�|�d|�|d|kr�dS|d|kr�dS|||d�dkr�|j|d d
�}|d kr|Sq|�|d|�\}}|dkr�dS|dk�r|�||d�|�d|�t|d
|�} | ||�}|d k�r,|Sq|dk�r�|d|k�rPdS|�|d|�\}}|d k�rr|S||dk�r,|d}q|dk�r�|d}x&||k�r�||���r�|d}�q�W||k�r�||dk�r�|S|�||�|�d�ndSq|���r|d}q|�||�|�d|�qWdS)N�<rrz<!rz*unexpected char in internal subset (in %r)rAz<!--r)r?>r�entity�notationr z)unknown declaration %r in internal subsetZ_parse_doctype_�%�;�]rz%unexpected char after internal subsetz%unexpected char %r in internal subset)rr#rrr$r&�getattr�isspace)
rr�declstartposrr,rr-�sr0Zmethrrrr+�sn
z ParserBase._parse_doctype_subsetcCsF|�||�\}}|dkrdS|j}d||d�krB|�d|�dSdS)Nrrr)r&r�find)rrrKr0rrrrr�_parse_doctype_element�sz!ParserBase._parse_doctype_elementcCs�|j}|�||�\}}|||d�}|dkr2dS|dkrB|dS�xv|�||�\}}|dkrb|S|||d�}|dkr~dS|dkr�d||d�kr�|�d|�d}ndSx |||d���r�|d}q�W||d�s�dSn|�||�\}}|||d�}|�s
dS|dk�rLt||�}|�r.|��}ndS|||d�}|�sLdS|d k�r�||d�d k�rldS|�|d|�\}}|dk�r�|S|||d�}|�s�dS|dkrF|dSqFWdS)
Nrrrrr�(�)z'"�#)rr&rMrJr)r*)rrrKrr0rr-r/rrr�_parse_doctype_attlistsZ
z!ParserBase._parse_doctype_attlistcCs�|�||�\}}|dkr|S|j}xl|||d�}|s<dS|dkrL|dS|dkrpt||�}|sfdS|��}q$|�||�\}}|dkr$|Sq$WdS)Nrrrrz'")r&rr)r*)rrrKr0rrr-r/rrr�_parse_doctype_notation=s$
z"ParserBase._parse_doctype_notationcCs�|j}|||d�dkrV|d}x6|||d�}|s<dS|��rN|d}q$Pq$Wn|}|�||�\}}|dkrv|Sxp|j||d�}|s�dS|dkr�t||�}|r�|��}q�dSqx|dkr�|dS|�||�\}}|dkrx|SqxWdS)NrrFrrz'"r)rrJr&r)r*)rrrKrrr-r0r/rrr�_parse_doctype_entityTs8
z ParserBase._parse_doctype_entitycCs�|j}t|�}||krdSt||�}|r\|��}|��}|t|�|krLdS|��|��fS|�||�|�d|||d��dS)N)Nrzexpected name token at %r�) rr#�_declname_match�group�strip�lowerr*rr)rrrKrr,r/rLr0rrrr&xs
zParserBase._scan_namecCsdS)Nr)rr.rrrr(�szParserBase.unknown_declN)r)r)�__name__�
__module__�__qualname__�__doc__rrrrrr'r1r%r$r+rNrRrSrTr&r(rrrrrs"
R
C9$r)
r]�re�compiler@rVr)rBr;r=rrrrr�<module>s
?>