Commit 2d82f3fc authored by Eli Bendersky's avatar Eli Bendersky

Remove the obsolete XMLParser._start/_start_list duality.

XMLParser configures expat to report attributes in a list (ordered_attributes),
so only _start_list is needed. Rename it to _start and kill _start.
parent ce016133
...@@ -1469,19 +1469,10 @@ class XMLParser: ...@@ -1469,19 +1469,10 @@ class XMLParser:
parser.CommentHandler = target.comment parser.CommentHandler = target.comment
if hasattr(target, 'pi'): if hasattr(target, 'pi'):
parser.ProcessingInstructionHandler = target.pi parser.ProcessingInstructionHandler = target.pi
# let expat do the buffering, if supported # Configure pyexpat: buffering, new-style attribute handling.
try: parser.buffer_text = 1
parser.buffer_text = 1 parser.ordered_attributes = 1
except AttributeError: parser.specified_attributes = 1
pass
# use new-style attribute handling, if supported
try:
parser.ordered_attributes = 1
parser.specified_attributes = 1
if hasattr(target, 'start'):
parser.StartElementHandler = self._start_list
except AttributeError:
pass
self._doctype = None self._doctype = None
self.entity = {} self.entity = {}
try: try:
...@@ -1503,7 +1494,7 @@ class XMLParser: ...@@ -1503,7 +1494,7 @@ class XMLParser:
parser.ordered_attributes = 1 parser.ordered_attributes = 1
parser.specified_attributes = 1 parser.specified_attributes = 1
def handler(tag, attrib_in, event=event_name, append=append, def handler(tag, attrib_in, event=event_name, append=append,
start=self._start_list): start=self._start):
append((event, start(tag, attrib_in))) append((event, start(tag, attrib_in)))
parser.StartElementHandler = handler parser.StartElementHandler = handler
elif event_name == "end": elif event_name == "end":
...@@ -1539,21 +1530,16 @@ class XMLParser: ...@@ -1539,21 +1530,16 @@ class XMLParser:
self._names[key] = name self._names[key] = name
return name return name
def _start(self, tag, attrib_in): def _start(self, tag, attr_list):
fixname = self._fixname # Handler for expat's StartElementHandler. Since ordered_attributes
tag = fixname(tag) # is set, the attributes are reported as a list of alternating
attrib = {} # attribute name,value.
for key, value in attrib_in.items():
attrib[fixname(key)] = value
return self.target.start(tag, attrib)
def _start_list(self, tag, attrib_in):
fixname = self._fixname fixname = self._fixname
tag = fixname(tag) tag = fixname(tag)
attrib = {} attrib = {}
if attrib_in: if attr_list:
for i in range(0, len(attrib_in), 2): for i in range(0, len(attr_list), 2):
attrib[fixname(attrib_in[i])] = attrib_in[i+1] attrib[fixname(attr_list[i])] = attr_list[i+1]
return self.target.start(tag, attrib) return self.target.start(tag, attrib)
def _end(self, tag): def _end(self, tag):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment