[Lxml-checkins] r47592 - lxml/branch/lxml-1.3/src/lxml
scoder at codespeak.net
scoder at codespeak.net
Fri Oct 19 16:45:14 CEST 2007
Author: scoder
Date: Fri Oct 19 16:45:13 2007
New Revision: 47592
Modified:
lxml/branch/lxml-1.3/src/lxml/etree.pyx
Log:
fix prefix name creation also for Python <= 2.4
Modified: lxml/branch/lxml-1.3/src/lxml/etree.pyx
==============================================================================
--- lxml/branch/lxml-1.3/src/lxml/etree.pyx (original)
+++ lxml/branch/lxml-1.3/src/lxml/etree.pyx Fri Oct 19 16:45:13 2007
@@ -231,8 +231,8 @@
When instances of this class are garbage collected, the libxml
document is cleaned up.
"""
- cdef unsigned int _ns_counter
- cdef object _prefix_format
+ cdef int _ns_counter
+ cdef object _prefix_tail
cdef xmlDoc* _c_doc
cdef _BaseParser _parser
@@ -298,12 +298,17 @@
return self._c_doc.URL
cdef buildNewPrefix(self):
- ns = python.PyString_FromFormat(
- _cstr(self._prefix_format), self._ns_counter)
+ ns = python.PyString_FromFormat("ns%d", self._ns_counter)
+ if self._prefix_tail is not None:
+ ns = ns + self._prefix_tail
self._ns_counter = self._ns_counter + 1
- if self._ns_counter == 0:
+ if self._ns_counter < 0:
# overflow!
- self._prefix_format = self._prefix_format + "A"
+ self._ns_counter = 0
+ if self._prefix_tail is None:
+ self._prefix_tail = "A"
+ else:
+ self._prefix_tail = self._prefix_tail + "A"
return ns
cdef xmlNs* _findOrBuildNodeNs(self, xmlNode* c_node,
@@ -378,7 +383,7 @@
result = _Document()
result._c_doc = c_doc
result._ns_counter = 0
- result._prefix_format = "ns%lu"
+ result._prefix_tail = None
if parser is None:
parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
result._parser = parser
More information about the lxml-checkins
mailing list