# HG changeset patch # User paulb # Date 1175992980 0 # Node ID 3f81b41475e9eef7270059070bb2ed90739a34d1 # Parent 1321d1eadde2b74ccf238174b54ad26b53f972f3 [project @ 2007-04-08 00:43:00 by paulb] Made various parser-related functions, exposing such functionality to other modules. diff -r 1321d1eadde2 -r 3f81b41475e9 libxml2dom/macrolib/macrolib.py --- a/libxml2dom/macrolib/macrolib.py Sun Apr 08 00:42:34 2007 +0000 +++ b/libxml2dom/macrolib/macrolib.py Sun Apr 08 00:43:00 2007 +0000 @@ -532,12 +532,10 @@ # NOTE: Switching off validation and remote DTD resolution. if not html: context = libxml2mod.xmlCreateFileParserCtxt(s) - libxml2mod.xmlParserSetPedantic(context, 0) - libxml2mod.xmlParserSetValidate(context, 0) - libxml2mod.xmlCtxtUseOptions(context, XML_PARSE_NOERROR | XML_PARSE_NOWARNING | XML_PARSE_NONET) - libxml2mod.xmlParseDocument(context) - doc = libxml2mod.xmlParserGetDoc(context) - if unfinished or libxml2mod.xmlParserGetWellFormed(context): + Parser_configure(context) + Parser_parse(context) + doc = Parser_document(context) + if unfinished or Parser_well_formed(context): return doc else: raise LSException(LSException.PARSE_ERR) @@ -548,12 +546,10 @@ # NOTE: Switching off validation and remote DTD resolution. if not html: context = libxml2mod.xmlCreateMemoryParserCtxt(s, len(s)) - libxml2mod.xmlParserSetPedantic(context, 0) - libxml2mod.xmlParserSetValidate(context, 0) - libxml2mod.xmlCtxtUseOptions(context, XML_PARSE_NOERROR | XML_PARSE_NOWARNING | XML_PARSE_NONET) - libxml2mod.xmlParseDocument(context) - doc = libxml2mod.xmlParserGetDoc(context) - if unfinished or libxml2mod.xmlParserGetWellFormed(context): + Parser_configure(context) + Parser_parse(context) + doc = Parser_document(context) + if unfinished or Parser_well_formed(context): return doc else: raise LSException(LSException.PARSE_ERR) @@ -567,12 +563,10 @@ # NOTE: Switching off validation and remote DTD resolution. if not html: context = libxml2mod.xmlCreateURLParserCtxt(uri, 0) - libxml2mod.xmlParserSetPedantic(context, 0) - libxml2mod.xmlParserSetValidate(context, 0) - libxml2mod.xmlCtxtUseOptions(context, XML_PARSE_NOERROR | XML_PARSE_NOWARNING | XML_PARSE_NONET) - libxml2mod.xmlParseDocument(context) - doc = libxml2mod.xmlParserGetDoc(context) - if unfinished or libxml2mod.xmlParserGetWellFormed(context): + Parser_configure(context) + Parser_parse(context) + doc = Parser_document(context) + if unfinished or Parser_well_formed(context): return doc else: raise LSException(LSException.PARSE_ERR) @@ -588,7 +582,7 @@ def toFile(node, f, encoding=None, prettyprint=0): libxml2mod.saveNodeTo(node, f, encoding, prettyprint) -# libxml2mod constants. +# libxml2mod constants and helper functions. HTML_PARSE_NOERROR = 32 HTML_PARSE_NOWARNING = 64 @@ -597,4 +591,24 @@ XML_PARSE_NOWARNING = 64 XML_PARSE_NONET = 2048 +def Parser_push(): + return libxml2mod.xmlCreatePushParser(None, "", 0, None) + +def Parser_configure(context): + libxml2mod.xmlParserSetPedantic(context, 0) + libxml2mod.xmlParserSetValidate(context, 0) + libxml2mod.xmlCtxtUseOptions(context, XML_PARSE_NOERROR | XML_PARSE_NOWARNING | XML_PARSE_NONET) + +def Parser_feed(context, s): + libxml2mod.xmlParseChunk(context, s, len(s), 1) + +def Parser_well_formed(context): + return libxml2mod.xmlParserGetWellFormed(context) + +def Parser_document(context): + return libxml2mod.xmlParserGetDoc(context) + +def Parser_parse(context): + libxml2mod.xmlParseDocument(context) + # vim: tabstop=4 expandtab shiftwidth=4