mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	Drop xmllib in favor of SAX.
This commit is contained in:
		
							parent
							
								
									1e53fa7907
								
							
						
					
					
						commit
						381832ead5
					
				
					 1 changed files with 30 additions and 21 deletions
				
			
		| 
						 | 
					@ -22,16 +22,11 @@ import re
 | 
				
			||||||
import string
 | 
					import string
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
import UserList
 | 
					import UserList
 | 
				
			||||||
 | 
					import xml.sax
 | 
				
			||||||
import xml.sax.saxutils
 | 
					import xml.sax.saxutils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from types import ListType, StringType, TupleType
 | 
					from types import ListType, StringType, TupleType
 | 
				
			||||||
 | 
					
 | 
				
			||||||
try:
 | 
					 | 
				
			||||||
    from xml.parsers.xmllib import XMLParser
 | 
					 | 
				
			||||||
except ImportError:
 | 
					 | 
				
			||||||
    from xmllib import XMLParser
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from esistools import encode
 | 
					from esistools import encode
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -439,14 +434,11 @@ class Parameter:
 | 
				
			||||||
        self.implied = 0
 | 
					        self.implied = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TableParser(XMLParser):
 | 
					class TableHandler(xml.sax.handler.ContentHandler):
 | 
				
			||||||
    def __init__(self, table=None):
 | 
					    def __init__(self):
 | 
				
			||||||
        if table is None:
 | 
					        self.__table = {}
 | 
				
			||||||
            table = {}
 | 
					 | 
				
			||||||
        self.__table = table
 | 
					 | 
				
			||||||
        self.__current = None
 | 
					 | 
				
			||||||
        self.__buffer = ''
 | 
					        self.__buffer = ''
 | 
				
			||||||
        XMLParser.__init__(self)
 | 
					        self.__methods = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_table(self):
 | 
					    def get_table(self):
 | 
				
			||||||
        for entry in self.__table.values():
 | 
					        for entry in self.__table.values():
 | 
				
			||||||
| 
						 | 
					@ -457,6 +449,27 @@ class TableParser(XMLParser):
 | 
				
			||||||
                entry.has_content = 1
 | 
					                entry.has_content = 1
 | 
				
			||||||
        return self.__table
 | 
					        return self.__table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def startElement(self, tag, attrs):
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            start, end = self.__methods[tag]
 | 
				
			||||||
 | 
					        except KeyError:
 | 
				
			||||||
 | 
					            start = getattr(self, "start_" + tag, None)
 | 
				
			||||||
 | 
					            end = getattr(self, "end_" + tag, None)
 | 
				
			||||||
 | 
					            self.__methods[tag] = (start, end)
 | 
				
			||||||
 | 
					        if start:
 | 
				
			||||||
 | 
					            start(attrs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def endElement(self, tag):
 | 
				
			||||||
 | 
					        start, end = self.__methods[tag]
 | 
				
			||||||
 | 
					        if end:
 | 
				
			||||||
 | 
					            end()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def endDocument(self):
 | 
				
			||||||
 | 
					        self.__methods.clear()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def characters(self, data):
 | 
				
			||||||
 | 
					        self.__buffer += data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def start_environment(self, attrs):
 | 
					    def start_environment(self, attrs):
 | 
				
			||||||
        name = attrs["name"]
 | 
					        name = attrs["name"]
 | 
				
			||||||
        self.__current = TableEntry(name, environment=1)
 | 
					        self.__current = TableEntry(name, environment=1)
 | 
				
			||||||
| 
						 | 
					@ -517,15 +530,11 @@ class TableParser(XMLParser):
 | 
				
			||||||
        p.text = self.__buffer
 | 
					        p.text = self.__buffer
 | 
				
			||||||
        self.__current.parameters.append(p)
 | 
					        self.__current.parameters.append(p)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def handle_data(self, data):
 | 
					 | 
				
			||||||
        self.__buffer = self.__buffer + data
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def load_table(fp):
 | 
				
			||||||
def load_table(fp, table=None):
 | 
					    ch = TableHandler()
 | 
				
			||||||
    parser = TableParser(table=table)
 | 
					    xml.sax.parse(fp, ch)
 | 
				
			||||||
    parser.feed(fp.read())
 | 
					    return ch.get_table()
 | 
				
			||||||
    parser.close()
 | 
					 | 
				
			||||||
    return parser.get_table()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def main():
 | 
					def main():
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue