Yf9 @ s} d Z d d l Z e j d j Z e j d j Z e j d Z e j d Z e j d Z [ Gd d d Z d S) 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 Z d Z d Z d d Z d d Z d d Z d d Z d d Z d Z d d Z d d d Z d d d Z d d Z d d Z d d Z d d Z d d Z d d Z d d! Z d" S)# ParserBaseziParser base class which provides some common support methods used by the SGML/HTML and XHTML parsers.c C s | j t k r t d d S)Nz)_markupbase.ParserBase must be subclassed) __class__r RuntimeError)self r 0/opt/alt/python35/lib64/python3.5/_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 )linenooffset)r r r r reset$ s zParserBase.resetc C s | j | j f S)z&Return current line number and offset.)r r )r r r r getpos( s zParserBase.getposc C s | | k r | S| j } | j d | | } | rm | j | | _ | j d | | } | | d | _ n | j | | | _ | S)N r )rawdatacountr rindexr )r ijr Znlinesposr r r updatepos0 s zParserBase.updatepos c C sO | j } | d } | | | d d k r5 | d S| | | d d k rS d St | } | | | d d k r | j | S| | d k r | j | S| j | | \ } } | d k r | S| d k r d | _ xh| | k rJ| | } | d k rJ| | d | } | d k r5| j | n | j | | d S| d k r~t | | } | sod S| j } n | d k r| j | | \ } } n | | j k r| d } nv | d k r"| d k r| j | d | } q7| d k r| j d | q7| j d n | j d | | | d k r | Sq Wd S)N r >-r z--[r Zdoctypez"'Z4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZattlistlinktypelinkelementz&unsupported '[' char in %s declarationz"unexpected '[' char in declarationz!unexpected %r char in declaration)r r r" > r r r r! r" )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 } | j | d | \ } } | d k r5 | S| d k rZ t j | | d } nD | d k r t j | | d } n | j d | | d | | s d S| r | j d } | j | | d | | j d S)N r tempcdataignoreincludercdataifelseendifz+unknown status keyword %r in marked sectionr > r4 r6 r5 r3 r7 > r8 r9 r: r" ) r r&