Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2697694

Browse files
committed
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.
1 parent f79acbd commit 2697694

1 file changed

Lines changed: 17 additions & 3 deletions

File tree

Doc/tools/sgmlconv/esistools.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import re
55
import string
66
import sys
7+
import xml.dom.core
8+
import xml.dom.esis_builder
79

810

911
_data_rx = re.compile(r"[^\\][^\\]*")
@@ -37,14 +39,12 @@ def encode(s):
3739
return string.join(map(_charmap.get, s), '')
3840

3941

40-
import xml.dom.esis_builder
41-
42-
4342
class ExtendedEsisBuilder(xml.dom.esis_builder.EsisBuilder):
4443
def __init__(self, *args, **kw):
4544
self.__empties = {}
4645
self.__is_empty = 0
4746
apply(xml.dom.esis_builder.EsisBuilder.__init__, (self,) + args, kw)
47+
self.fragment = self.document.createDocumentFragment()
4848

4949
def feed(self, data):
5050
for line in string.split(data, '\n'):
@@ -76,5 +76,19 @@ def feed(self, data):
7676
else:
7777
sys.stderr.write('Unknown event: %s\n' % line)
7878

79+
def push(self, node):
80+
"Add node to current node and move to new node."
81+
82+
nodetype = node.get_nodeType()
83+
if self.current_element:
84+
self.current_element.insertBefore(node, None)
85+
elif nodetype == xml.dom.core.TEXT_NODE:
86+
if string.strip(node.get_nodeValue()):
87+
self.fragment.appendChild(node)
88+
else:
89+
self.fragment.appendChild(node)
90+
if nodetype == xml.dom.core.ELEMENT_NODE:
91+
self.current_element = node
92+
7993
def get_empties(self):
8094
return self.__empties.keys()

0 commit comments

Comments
 (0)