관리-도구
편집 파일: _markupbase.cpython-37.pyc
B � f9 � @ sV d Z ddlZe�d�jZe�d�jZe�d�Ze�d�Ze�d�Z[G dd � 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� e Zd ZdZdd� 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.c C s | j tkrtd��d S )Nz)_markupbase.ParserBase must be subclassed)� __class__r �RuntimeError)�self� r �0/opt/alt/python37/lib64/python3.7/_markupbase.py�__init__ s zParserBase.__init__c C s t d��d S )Nz.subclasses of ParserBase must override error())�NotImplementedError)r �messager r r �error s zParserBase.errorc C s d| _ d| _d S )N� r )�lineno�offset)r r r r �reset$ s zParserBase.resetc C s | j | jfS )z&Return current line number and offset.)r r )r r r r �getpos( s zParserBase.getposc C sb ||kr|S | j }|�d||�}|rN| j| | _|�d||�}||d | _n| j| | | _|S )N� r )�rawdata�countr �rindexr )r �i�jr Znlines�posr r r � updatepos0 s zParserBase.updatepos� c C s� | j }|d }|||� dks&td��|||d � dkrB|d S |||d � dkrZdS t|�}|||d � dkr�| �|�S || d kr�| �|�S | �||�\}}|d k r�|S |dkr�d| _�x||k �r�|| }|dk�r||d |� }|dk�r| �|� n | �|� |d S |d k�r@t ||�}|�s6dS |� � }n�|dk�r\| �||�\} }nt|| jk�rr|d }n^|d k�r�|dk�r�| �|d |�}n$|dk�r�| �d| � n | �d� n| �d|| � |d k r�|S q�W dS )N� z<!z$unexpected call to parse_declarationr �>)�-r ���z--�[r Zdoctyper z"'Z4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ> �attlist�linktype�element�linkz&unsupported '[' char in %s declarationz"unexpected '[' char in declarationz!unexpected %r char in declaration) r �AssertionError�len� parse_comment�parse_marked_section� _scan_name�_decl_othercharsZhandle_decl�unknown_decl�_declstringlit_match�end�_parse_doctype_subsetr ) r r r r �nZdecltype�c�data�m�namer r r �parse_declaration@ sZ zParserBase.parse_declarationr c C s� | j }|||d � dks"td��| �|d |�\}}|dk rB|S |dkr\t�||d �}n4|dkrvt�||d �}n| �d||d |� � |s�dS |r�|�d�}| �||d |� � |� d�S ) N� z<![z)unexpected call to parse_marked_section()r > �include�rcdata�ignore�cdata�temp> �if�endif�elsez+unknown status keyword %r in marked sectionr ) r r# r'