a
XC?h9 ã @ 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 tu rtdƒ‚d S )Nz)_markupbase.ParserBase must be subclassed)Ú __class__r ÚRuntimeError©Úself© r ú0/opt/alt/python39/lib64/python3.9/_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Úoffsetr r r r Úreset$ s zParserBase.resetc C s | j | jfS )z&Return current line number and offset.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 }|||d … dkr*|d S |||d … dv rBdS t|ƒ}|||d … dkrh| |¡S || dkr~| |¡S | ||¡\}}|dk rš|S |d kr¨d
| _||k r¾|| }|dkrø||d |… }|d kræ| |¡ n
| |¡ |d S |dv r t||ƒ}|sdS | ¡ }n|dv r<| ||¡\} }nt|| jv rR|d }n^|dkrž|d krx|
|d |¡}n$|d
v r’| d| ¡ n
| d¡ n| d|| ¡ |dk r¨|S q¨dS )Né r
ú>)ú-r éÿÿÿÿz--ú[r Zdoctyper z"'Z4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ> ÚattlistÚlinkÚelementZlinktypez&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 )
r r r r ÚnZdecltypeÚcÚdataÚmÚnamer r r Úparse_declaration@ sZ
ÿzParserBase.parse_declarationr
c C s® | j }| |d |¡\}}|dk r&|S |dv r@t ||d ¡}n8|dv rZt ||d ¡}n| d||d |… ¡ d }|s€dS |r¤| d¡}| ||d |… ¡ | d¡S )Né r > ZtempZcdataÚignoreZincludeZrcdata> ÚifZendifÚelsez+unknown status keyword %r in marked sectionr ) r r' Ú_markedsectioncloseÚsearchÚ_msmarkedsectioncloser Ústartr) r+ )r r Úreportr ZsectNamer Úmatchr r r r&