summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>1999-05-07 21:14:28 (GMT)
committerFred Drake <fdrake@acm.org>1999-05-07 21:14:28 (GMT)
commit2697694e4a56d9a87b4360b7fa4c7feafce92a94 (patch)
treed0ee9578e0a50824e042fb62b6421fa0a44b5bcb
parentf79acbdaa1798eceb5e00ad32bbbfbf191333817 (diff)
downloadcpython-2697694e4a56d9a87b4360b7fa4c7feafce92a94.zip
cpython-2697694e4a56d9a87b4360b7fa4c7feafce92a94.tar.gz
cpython-2697694e4a56d9a87b4360b7fa4c7feafce92a94.tar.bz2
ExtendedEsisBuilder.push(): Override inherited definition. We don't
want to push nodes into the document, but into a document fragment, since we're not necesarily working with something that's well-formed.
-rw-r--r--Doc/tools/sgmlconv/esistools.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/Doc/tools/sgmlconv/esistools.py b/Doc/tools/sgmlconv/esistools.py
index f44c13c..3e0ffc3 100644
--- a/Doc/tools/sgmlconv/esistools.py
+++ b/Doc/tools/sgmlconv/esistools.py
@@ -4,6 +4,8 @@ __version__ = '$Revision$'
import re
import string
import sys
+import xml.dom.core
+import xml.dom.esis_builder
_data_rx = re.compile(r"[^\\][^\\]*")
@@ -37,14 +39,12 @@ def encode(s):
return string.join(map(_charmap.get, s), '')
-import xml.dom.esis_builder
-
-
class ExtendedEsisBuilder(xml.dom.esis_builder.EsisBuilder):
def __init__(self, *args, **kw):
self.__empties = {}
self.__is_empty = 0
apply(xml.dom.esis_builder.EsisBuilder.__init__, (self,) + args, kw)
+ self.fragment = self.document.createDocumentFragment()
def feed(self, data):
for line in string.split(data, '\n'):
@@ -76,5 +76,19 @@ class ExtendedEsisBuilder(xml.dom.esis_builder.EsisBuilder):
else:
sys.stderr.write('Unknown event: %s\n' % line)
+ def push(self, node):
+ "Add node to current node and move to new node."
+
+ nodetype = node.get_nodeType()
+ if self.current_element:
+ self.current_element.insertBefore(node, None)
+ elif nodetype == xml.dom.core.TEXT_NODE:
+ if string.strip(node.get_nodeValue()):
+ self.fragment.appendChild(node)
+ else:
+ self.fragment.appendChild(node)
+ if nodetype == xml.dom.core.ELEMENT_NODE:
+ self.current_element = node
+
def get_empties(self):
return self.__empties.keys()