[Lxml-checkins] r52596 - in lxml/trunk: . src/lxml

scoder at codespeak.net scoder at codespeak.net
Sun Mar 16 13:53:25 CET 2008


Author: scoder
Date: Sun Mar 16 13:53:25 2008
New Revision: 52596

Modified:
   lxml/trunk/   (props changed)
   lxml/trunk/src/lxml/parser.pxi
Log:
 r3799 at delle:  sbehnel | 2008-03-16 13:52:28 +0100
 cleanup, raise a more specific type error on an unparsable source


Modified: lxml/trunk/src/lxml/parser.pxi
==============================================================================
--- lxml/trunk/src/lxml/parser.pxi	(original)
+++ lxml/trunk/src/lxml/parser.pxi	Sun Mar 16 13:53:25 2008
@@ -1294,10 +1294,22 @@
 
 cdef _Document _parseDocument(source, _BaseParser parser, base_url):
     cdef _Document doc
+    if _isString(source):
+        # parse the file directly from the filesystem
+        doc = _parseDocumentFromURL(_encodeFilename(source), parser)
+        # fix base URL if requested
+        if base_url is not None:
+            base_url = _encodeFilenameUTF8(base_url)
+            if doc._c_doc.URL is not NULL:
+                tree.xmlFree(doc._c_doc.URL)
+            doc._c_doc.URL = tree.xmlStrdup(_cstr(base_url))
+        return doc
+
     if base_url is not None:
         url = base_url
     else:
         url = _getFilenameForFile(source)
+
     if hasattr(source, 'getvalue') and hasattr(source, 'tell'):
         # StringIO - reading from start?
         if source.tell() == 0:
@@ -1309,16 +1321,7 @@
         return _parseFilelikeDocument(
             source, _encodeFilenameUTF8(url), parser)
 
-    # Otherwise parse the file directly from the filesystem
-    filename = _encodeFilename(source)
-    doc = _parseDocumentFromURL(filename, parser)
-    # fix base URL if requested
-    if base_url is not None:
-        base_url = _encodeFilenameUTF8(base_url)
-        if doc._c_doc.URL is not NULL:
-            tree.xmlFree(doc._c_doc.URL)
-        doc._c_doc.URL = tree.xmlStrdup(_cstr(base_url))
-    return doc
+    raise TypeError("cannot parse from '%s'" % python._fqtypename(source))
 
 cdef _Document _parseDocumentFromURL(url, _BaseParser parser):
     cdef xmlDoc* c_doc


More information about the lxml-checkins mailing list