ó \STc@sËdZddlZddlZddlZddlZddd„ƒYZddd„ƒYZddd„ƒYZd eejfd „ƒYZ d efd „ƒYZ d dd„ƒYZ ddd„ƒYZ dS(s[ An SGML Open catalog file parser. $Id: catalog.py,v 1.14 2001/12/30 12:09:14 loewis Exp $ iÿÿÿÿNtCatParserFactorycBs#eZdZdd„Zd„ZRS(sVThis class is used by the CatalogManager to create new parsers as they are needed.cCs ||_dS(N(t error_lang(tselfR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyt__init__scCs t|jƒS(N(t CatalogParserR(Rtsysid((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyt make_parsersN(t__name__t __module__t__doc__tNoneRR(((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyR s t CatalogAppcBsYeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z RS( cCsdS(N((RtpubidR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyt handle_publicscCsdS(N((RtprefixR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pythandle_delegatescCsdS(N((RR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pythandle_document scCsdS(N((Rtsysid1tsysid2((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyt handle_system#scCsdS(N((RR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyt handle_base&scCsdS(N((RR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pythandle_catalog)scCsdS(N((Rtyesno((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pythandle_override,scCsdS(N((RtdocelemR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pythandle_doctype/scCsdS(sšCalled for SGMLDECL catalog entries. These are only used by SGML systems and tell the application where to find the SGML declaration file.N((RR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pythandle_sgmldecl2s( RRR RRRRRRRR(((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyR s        tAbstrCatalogParsercBs,eZdZdd„Zd„Zd„ZRS(sFAbstract catalog parser with functionality needed in all such parsers.cCs+tƒ|_tjdƒ|_||_dS(N(R tapptxmlappt ErrorHandlerR terrR(RR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyR<s cCs ||_dS(N(R(RR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pytset_applicationAscCs ||_dS(N(R(RR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pytset_error_handlerDsN(RRR R RR R!(((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyR9s  RcBsGeZdZdd„Zd„Zd„Zd„Zd„Zd„Z RS(s%A parser for SGML Open catalog files.cCsltj||ƒtjj|ƒi d d6dd6dd6dd6dd6dd 6dd 6dd 6dd 6|_dS(NtptstPUBLICtDELEGATEtCATALOGtDOCUMENTtotBASEtSYSTEMtOVERRIDEtDOCTYPEtSGMLDECL(R"R#(R"R#(R(R#(R(R#(RRtxmlutilst EntityParsert entry_hash(RR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyRLscCs |jr|j|jƒndS(N(Rtset_error_language(R((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyt parseStartYs cCsÒyŸx˜|jd|jkr|j}|jƒ|jd|jkrIPn|jtjƒ}|jj|ƒsƒ|jd|fƒq|j ||j|ƒqWWn,tj k rÍ|j rÁ‚qÎ||_nXdS(Niiì( tpostdatasizet skip_stufftfind_regR.treg_wsR0thas_keyt report_errort parse_entrytOutOfDataExceptiontfinal(Rtprepost entryname((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pytdo_parse]s   cCsP|jdƒrd}n+|jdƒr0d}n|jtjdƒS|j|ƒS(Nt"t'i(tnow_atR6R.R7tscan_to(Rtdelim((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyt parse_argrs   cCs4x-|jƒ|jdƒr,|jdƒqPqdS(s,Skips whitespace and comments between items.s--N(tskip_wsRBRC(R((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyR5|s  cCsg}x+|D]#}|jƒ|j|jƒƒq W|dkr^|jj|d|dƒn-|dkr|jj|dƒn |dkr«|jj|d|dƒnà|dkrÎ|jj|dƒn½|dkrñ|jj|dƒnš|dkr|jj |d|dƒnp|d kr>|jj |dƒnM|d krh|jj |d|dƒn#|d kr‹|jj |dƒndS( NR$iiR&R%R)R'R*R+R,R-( R5tappendRERR RRRRRRRR(Rtnametargstarglisttarg((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyR:…s,           N( RRR R RR2R?RER5R:(((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyRIs   tCatalogManagercBsÅeZdd„Zd„Zd„Zd„Zejd„Z d„Z d„Z d„Z d„Z d „Zd „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCsyi|_i|_g|_d|_i|_d|_d|_g|_|pZt j dƒ|_ t ƒ|_ d|_dS(N(t_CatalogManager__publict_CatalogManager__systemt_CatalogManager__delegationsR t_CatalogManager__documentt_CatalogManager__doctypest_CatalogManager__baset_CatalogManager__sgmldeclt_CatalogManager__catalog_stackRRRRt parser_facttparser(Rt error_handler((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyR¢s         cCs ||_dS(N(R(RR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyR!´scCs ||_dS(N(RU(RRU((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pytset_parser_factory·scCs»|jj|jfƒ||_|jj|ƒ|_|jjƒ}|jj|jƒ|jj |jƒ|jj |ƒ|jj |ƒ|jj|ƒ|jdd|_|jd=dS(Niÿÿÿÿi( RTRGRRRURRVRt get_locatort set_locatorR!R tparse_resource(RRt old_locator((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyt parse_catalogºs cCsÚ|jd|jƒ|jdƒx(|jjƒD]}|jd|ƒq1W|jdƒx(|jjƒD]}|jd|ƒqiW|jdƒxB|jD]7\}}|jd|ƒ|j|ƒ|jdƒq›WdS(NsDocument sysid: %s sFPI mappings: s %s -> %s sSysid mappings: s Delegates: s---PREFIX MAPPER: %s s---EOPM (twriteRPRMtitemsRNROtreport(RtouttitRtcat_man((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyR`És    cCs ||_dS(N(RR(Rtnewbase((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyRÜscCs|j|j|ƒƒdS(N(R]t_CatalogManager__resolve_sysid(RR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyRßscCs|j|ƒ|j|\}}||t|ƒ kr|j||ƒ}d}PqqW|s y|j|}Wq tk rœ|jjd|ƒq Xn|j|ƒS|j|ƒdS(NiisUnknown public identifier '%s'( R ROtlent resolve_sysidRMRmRterrorRn(RR RtresolvedRtcatalog((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyRps   cCs|j|j|ƒS(s‡Returns the system identifier of the DTD with the given document element. Raises KeyError if no such document element is known.(RnRQ(RR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pytget_doctype_sysid"scCstj|j|ƒS(N(R.t join_sysidsRR(RR((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyt__resolve_sysid)sN(RRR RR!RXR]tsyststdoutR`RRR RRRRRRhRkRlRnRpRtRe(((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyRL s(                 txmlproc_catalogcBsAeZdd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs3t|ƒ|_|jj|ƒ|jj|ƒdS(N(RLRsRXR](RRtpfRW((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyR0scCs |jjƒS(N(RsRk(R((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyRk5scCs |jjƒS(N(RsRl(R((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyRl8scCs3|dkr|jj|ƒS|jj||ƒSdS(N(R RsRnRp(RR R((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pytresolve_pe_pubid;s cCs3|dkr|jj|ƒS|jj||ƒSdS(N(R RsRnRp(RR R((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pytresolve_doctype_pubidAs cCs3|dkr|jj|ƒS|jj||ƒSdS(N(R RsRnRp(RR R((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pytresolve_entity_pubidGs N( RRR RRkRlR{R|R}(((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyRy.s      t SAX_catalogcBseZd„Zd„ZRS(cCs0tƒ|_|jj|ƒ|jj|ƒdS(N(RLRsRXR](RRRz((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyRQs cCs|jj||ƒS(N(RsRp(RR R((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyt resolveEntityVs(RRRR(((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyR~Os (((((( R tstringRwR.RRR RR/RRLRyR~(((sO/opt/freeware/lib64/python2.7/site-packages/_xmlplus/parsers/xmlproc/catalog.pyts !WŽ!