U iÛ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@seZdZdZdd„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ú0/opt/alt/python38/lib64/python3.8/_markupbase.pyÚ__init__s ÿzParserBase.__init__cCs tdƒ‚dS)Nz.subclasses of ParserBase must override error())ÚNotImplementedError)rÚmessagerrrÚerror sÿzParserBase.errorcCsd|_d|_dS)Nér©ÚlinenoÚoffsetrrrrÚreset$szParserBase.resetcCs |j|jfS)z&Return current line number and offset.rrrrrÚgetpos(szParserBase.getposcCsb||kr |S|j}| d||¡}|rN|j||_| d||¡}||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€| |¡S||d kr–| |¡S| ||¡\}}|d kr²|S|d krÀd |_||krÚ||}|dkr||d|…}|d kr| |¡n | |¡|dS|d kr)ú-réÿÿÿÿz--ú[rZdoctyperz"'Z4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ>ÚattlistÚelementÚlinkÚlinktypez&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_othercharsZ handle_declÚ unknown_declÚ_declstringlit_matchÚendÚ_parse_doctype_subsetr ) rrrrÚnZdecltypeÚcÚdataÚmÚnamerrrÚparse_declaration@s\                    ÿzParserBase.parse_declarationr cCsÆ|j}|||d…dks"tdƒ‚| |d|¡\}}|dkrB|S|dkr\t ||d¡}n4|dkrvt ||d¡}n| d||d|…¡|s˜dS|r¼| d¡}| ||d|…¡|  d¡S) NézÚincludeÚcdataÚtempÚrcdataÚignore>ÚelseÚendifÚifz+unknown status keyword %r in marked sectionr ) rr&r*Ú_markedsectioncloseÚsearchÚ_msmarkedsectioncloser Ústartr,r.)rrÚreportrZsectNamerÚmatchrrrr)’s  zParserBase.parse_marked_sectioncCsj|j}|||d…dkr$| d¡t ||d¡}|sr"r#ÚentityÚnotationz)unknown declaration %r in internal subsetZ_parse_doctype_ú%ú;ú]rz%unexpected char after internal subsetz%unexpected char %r in internal subset)rr'rr r(r*ÚgetattrÚisspace) rrÚ declstartposrr0rr1Úsr4Zmethrrrr/¶sp     ÿ             z ParserBase._parse_doctype_subsetcCsF| ||¡\}}|dkrdS|j}d||d…krB| d|¡dSdS)Nr rr )r*rÚfind)rrrPr4rrrrrÚ_parse_doctype_elementùsz!ParserBase._parse_doctype_elementcCs¶|j}| ||¡\}}|||d…}|dkr2dS|dkrB|dS| ||¡\}}|dkr^|S|||d…}|dkrzdS|dkrØd||d…kr¤| d|¡d}ndS|||d… ¡rÆ|d}q¨||d…sèdSn| ||¡\}}|||d…}|sdS|dkrDt||ƒ}|r&| ¡}ndS|||d…}|sDdS|d kr ||d…d krddS| |d|¡\}}|dkr†|S|||d…}|s dS|dkrB|dSqBdS) Nr rr rrú(ú)ú'"ú#)rr*rRrOr-r.)rrrPrr4rr1r3rrrÚ_parse_doctype_attlistsX       z!ParserBase._parse_doctype_attlistcCs| ||¡\}}|dkr|S|j}|||d…}|s:dS|dkrJ|dS|dkrnt||ƒ}|sddS| ¡}q"| ||¡\}}|dkr"|Sq"dS)Nrr r rrV)r*rr-r.)rrrPr4rrr1r3rrrÚ_parse_doctype_notation=s"  z"ParserBase._parse_doctype_notationcCsä|j}|||d…dkrR|d}|||d…}|s:dS| ¡rP|d}q"qVq"n|}| ||¡\}}|dkrr|S|j||d…}|sŒdS|dkr²t||ƒ}|r¬| ¡}qÞdSqr|dkrÂ|dS| ||¡\}}|dkrr|SqrdS)Nr rKr rrVr)rrOr*r-r.)rrrPrrr1r4r3rrrÚ_parse_doctype_entityTs4   z ParserBase._parse_doctype_entitycCs†|j}t|ƒ}||krdSt||ƒ}|r\| ¡}| ¡}|t|ƒ|krLdS| ¡| ¡fS| ||¡| d|||d…¡dS)N)Nr zexpected name token at %ré) rr'Ú_declname_matchÚgroupÚstripÚlowerr.rr )rrrPrr0r3rQr4rrrr*xs  ÿzParserBase._scan_namecCsdS)Nr)rr2rrrr,ŠszParserBase.unknown_declN)r )r )Ú__name__Ú __module__Ú __qualname__Ú__doc__r r rrrr+r5r)r(r/rSrXrYrZr*r,rrrrrs" R  C 9$r) rcÚreÚcompilerDr\r-rGr?rArrrrrÚs