[Subversion] / PEAK / src / peak / util / SOX.py  

Diff of /PEAK/src/peak/util/SOX.py

Parent Directory | Revision Log

version 1846, Sun Oct 10 17:52:45 2004 UTC version 1847, Mon Oct 11 19:36:04 2004 UTC
Line 461 
Line 461 
   
     """      """
   
       _parser = _url = None
   
     def __init__(self):      def __init__(self):
         self.element_map = {}          self.element_map = {}
         self.attribute_map = {}          self.attribute_map = {}
Line 488 
Line 490 
             return '',name              return '',name
   
   
   
   
     def startElement(self,name,attrs):      def startElement(self,name,attrs):
           if self.stack[-1].get('empty'): self.err("Child elements not allowed")
         a = []; append = a.append; negattrs=[]          a = []; append = a.append; negattrs=[]
         attrs.reverse(); pop = attrs.pop          attrs.reverse(); pop = attrs.pop
         data = {'name':name, 'attributes':a, 'previous':self.stack[-1]}          data = {'name':name, 'attributes':a, 'previous':self.stack[-1]}
Line 550 
Line 550 
             if 'lookups' in data:              if 'lookups' in data:
                 self.lookup_element, self.lookup_attribute = data['lookups']                  self.lookup_element, self.lookup_attribute = data['lookups']
   
   
     def resetCaches(self):      def resetCaches(self):
         data = self.stack[-1]          data = self.stack[-1]
         if 'caches' not in data:          if 'caches' not in data:
Line 559 
Line 558 
   
         self.attribute_map, self.element_map = {}, {}          self.attribute_map, self.element_map = {}, {}
   
       def err(self,msg,kind=SyntaxError):
           """Generate an error with current parse location"""
           exc = kind()
           exc.msg = msg
           exc.filename = self._url
           if self._parser:
               exc.text = self._parser.GetInputContext()
               exc.lineno = self._parser.CurrentLineNumber
               exc.offset = self._parser.CurrentColumnNumber
           else:
               exc.lineno = exc.offset = exc.text = None
           exc.args = msg, (exc.filename,exc.lineno,exc.offset,exc.text)
           raise exc
   
     def setLookups(self,element=None,attribute=None):      def setLookups(self,element=None,attribute=None):
         self.resetCaches()          self.resetCaches()
Line 614 
Line 614 
   
   
     def makeParser(self):      def makeParser(self):
         from xml.parsers.expat import ParserCreate          from pyexpat import ParserCreate
         p = ParserCreate()          p = ParserCreate()
         p.ordered_attributes = True          p.ordered_attributes = True
         p.returns_unicode = True          p.returns_unicode = True
Line 627 
Line 627 
         return p          return p
   
   
     def _beforeParsing(self,root=None):      def _beforeParsing(self,root=None,url=None):
         root = root or {}          root = root or {}
         self.stack.append(root)          self.stack.append(root)
         return self.makeParser()          p = self.makeParser()
           self._parser = p; self._url = url
           return p
   
     def _afterParsing(self):      def _afterParsing(self):
         data = self.stack.pop()          data = self.stack.pop()
         finish = data.get('finish')          finish = data.get('finish')
           try:
         if finish:          if finish:
             return finish(self,data)              return finish(self,data)
           finally:
               del self._parser, self._url
   
       def parseString(self,text,root=None,url=None):
     def parseString(self,text,root=None):          self._beforeParsing(root,url).Parse(text,True)
         self._beforeParsing(root).Parse(text,True)  
         return self._afterParsing()          return self._afterParsing()
   
   
     def parseStream(self,stream,root=None):      def parseStream(self,stream,root=None,url=None):
         self._beforeParsing(root).ParseFile(stream)          self._beforeParsing(root,url).ParseFile(stream)
         return self._afterParsing()          return self._afterParsing()
   
   
   
   
   
   
   
 class ExpatBuilder:  class ExpatBuilder:
   
     """Parser that assembles a document"""      """Parser that assembles a document"""
Line 665 
Line 665 
         self.nsInfo  = {}   # URI stack for each NS prefix          self.nsInfo  = {}   # URI stack for each NS prefix
   
     def makeParser(self):      def makeParser(self):
         from xml.parsers.expat import ParserCreate          from pyexpat import ParserCreate
         p = ParserCreate()          p = ParserCreate()
         p.ordered_attributes = True          p.ordered_attributes = True
         p.returns_unicode = True          p.returns_unicode = True


Generate output suitable for use with a patch program
Legend:
Removed from v.1846  
changed lines
  Added in v.1847

cvs-admin@eby-sarna.com

Powered by ViewCVS 1.0-dev

ViewCVS and CVS Help