B 3UDB @ sV d Z ddlZedjZedjZedZedZedZ[G dd d Z dS ) zShared 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#ddZd$ddZdd 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 tkrtdd 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 dd 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 )linenooffset)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 )rawdatacountr rindexr )r ijr Znlinesposr r r updatepos0 s zParserBase.updatepos c C s | j }|d }|||d dkr*|d S |||d dkrBdS t|}|||d dkrh| |S || dkr~| |S | ||\}}|dk r|S |d krd | _x||k r|| }|dk r||d | }|d kr| | n | | |d S |dkr&t||}|sdS | }n|dkrB| ||\} }nt|| jkrX|d }n^|dkr|d kr~| |d |}n$|d kr| d| n | d n| d|| |dk r|S qW dS )N r >)-r z--[r Zdoctyper z"'Z4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ> attlistlinklinktypeelementz&unsupported '[' char in %s declarationz"unexpected '[' char in declarationz!unexpected %r char in declaration)r len parse_commentparse_marked_section _scan_name_decl_othercharsZhandle_declunknown_decl_declstringlit_matchend_parse_doctype_subsetr ) r r r r nZdecltypecdatamnamer r r parse_declaration@ sX zParserBase.parse_declarationr c C s | j }| |d |\}}|dk r&|S |dkr@t||d }n4|dkrZt||d }n| d||d | |s|dS |r|d}| ||d | |dS )N r > ignorecdataincludetemprcdata> ifelseendifz+unknown status keyword %r in marked sectionr ) r r&