3 \9�@sVdZddlZejd�jZejd�jZejd�Zejd�Zejd�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 �Zd Z d d�Z d#dd�Z d$dd�Z dd�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�#/usr/lib64/python3.6/_markupbase.py�__init__s zParserBase.__init__cCs td��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}|jd||�}|rN|j||_|jd||�}||d|_n|j|||_|S)N� r )�rawdata�countr �rindexr)r�i�jrZnlines�posrrr� updatepos0s zParserBase.updatepos�c Cs�|j}|d}|||�dks&td��|||d�dkrB|dS|||d�dkrZdSt|�}|||d�dkr�|j|�S||d kr�|j|�S|j||�\}}|d kr�|S|d kr�d|_�x||k�r�||}|dk�r||d|�}|d k�r|j|�n |j|�|dS|d k�r@t ||�}|�s6dS|j �}n�|d k�r\|j||�\} }nt||jk�rr|d}n^|d k�r�|d k�r�|j |d|�}n$|dk�r�|j d|�n |j d�n|j d||�|d kr�|Sq�WdS)N�z�-rz--�[rZdoctypez"'Z4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ�attlist�linktype�link�elementz&unsupported '[' char in %s declarationz"unexpected '[' char in declarationz!unexpected %r char in declaration)rr�����r">r rrr!r") r�AssertionError�len� parse_comment�parse_marked_section� _scan_name�_decl_othercharsZ handle_decl� unknown_decl�_declstringlit_match�end�_parse_doctype_subsetr ) rrrr�nZdecltype�c�data�m�namerrr�parse_declaration@sZ                  zParserBase.parse_declarationr cCs�|j}|||d�dks"td��|j|d|�\}}|dkrB|S|dkr\tj||d�}n4|dkrvtj||d�}n|jd ||d|��|s�dS|r�|jd�}|j||d|��|j d�S)N�zr7r5r8r4r6>r9r:r;r") rr#r'�_markedsectionclose�search�_msmarkedsectioncloser �startr)r+)rr�reportrZsectNamer�matchrrrr&�s  zParserBase.parse_marked_sectioncCsj|j}|||d�dkr$|jd�tj||d�}|srErFrr!r"r"r")rr$rr r%r'�getattr�isspace) rr� declstartposrr-rr.�sr1�methrrrr,�sn                 z ParserBase._parse_doctype_subsetcCsF|j||�\}}|dkrdS|j}d||d�krB|jd|�dSdS)Nr rr"r"r")r'r�find)rrrLr1rrrrr�_parse_doctype_element�sz!ParserBase._parse_doctype_elementcCs�|j}|j||�\}}|||d�}|dkr2d S|dkrB|dS�xv|j||�\}}|dkrb|S|||d�}|dkr~d S|dkr�d||d�kr�|jd|�d}nd Sx |||d�j�r�|d}q�W||d�s�d Sn|j||�\}}|||d�}|�s d S|dk�rLt||�}|�r.|j�}ndS|||d�}|�sLdS|dk�r�||d�dk�rldS|j|d|�\}}|dk�r�|S|||d�}|�s�dS|dkrF|dSqFWdS)Nr rrr�(�)z'"�#r"r"r"r"r"r"r"r"r")rr'rOrKr*r+)rrrLrr1rr.r0rrr�_parse_doctype_attlistsZ       z!ParserBase._parse_doctype_attlistcCs�|j||�\}}|dkr|S|j}xl|||d�}|srrrrr�s