/[gnue]/gnue-common/src/logic/GTrigger.py
ViewVC logotype

Diff of /gnue-common/src/logic/GTrigger.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.35 by jcater, Tue Jul 22 02:24:59 2003 UTC revision 1.36 by jcater, Tue Jul 22 03:18:18 2003 UTC
# Line 38  from gnue.common.formatting import GType Line 38  from gnue.common.formatting import GType
38  from xml.sax import saxutils  from xml.sax import saxutils
39  from gnue.common.definitions.GParserHelpers import GContent  from gnue.common.definitions.GParserHelpers import GContent
40    
41  class TriggerError:  class TriggerError(StandardError):
42    def __init__(self, msg):    pass
43      self.msg = msg  
44    class TriggerRuntimeError(StandardError):
45      pass
46    
47  class TriggerAbort:  class TriggerAbort:
48    pass    pass
# Line 160  class GTrigger(GObj): Line 162  class GTrigger(GObj):
162      try:      try:
163        self._code = compile(revisedTriggerCode, '<string>', 'exec')        self._code = compile(revisedTriggerCode, '<string>', 'exec')
164      except SyntaxError, err:      except SyntaxError, err:
165        try:        _handleTriggerException(self, err)
166          name = self.name  #      GDebug.printMesg(0, "Syntax error in line %s of trigger in element ??" \
167        except:  #            % ( err.lineno ))
168          name = self.type  #      msg = _('There is a syntax error in one of this document\'s triggers.\n\nTraceback:\n') + \
169    #            '  Trigger "%s" (%s), line %s' % (name, self.type, err.lineno - 1) + "\n" + \
170    #            '    ' + err.text[:-1] + "\n" + \
171        print dir(err)  #            '    ' + (' ' * err.offset) + '^\n' + \
172        GDebug.printMesg(0, "Syntax error in line %s of trigger in element ??" \  #            'SyntaxError: ' + err.msg
173              % ( err.lineno ))  #      raise ValueError, msg
       msg = _('There is a syntax error in one of this document\'s triggers.\n\nTraceback:\n') + \  
             '  Trigger "%s" (%s), line %s' % (name, self.type, err.lineno - 1) + "\n" + \  
             '    ' + err.text[:-1] + "\n" + \  
             '    ' + (' ' * err.offset) + '^\n' + \  
             'SyntaxError: ' + err.msg  
       raise ValueError, msg  
174    
175      def thisTrigger(myself, code = self._code,      def thisTrigger(myself, code = self._code,
176                      triggerns = self._triggerns,                      triggerns = self._triggerns,
# Line 192  class GTrigger(GObj): Line 188  class GTrigger(GObj):
188    
189          # And execute our code          # And execute our code
190          exec code in globalns, localns          exec code in globalns, localns
191        except TriggerError:        except StandardError, err:
192          raise          if not isinstance(err, TriggerError):
193        except:            # May be better to deal with this in GTriggerExtension
194          # May be better to deal with this in GTriggerExtension            _handleTriggerException(self, err)
195          raise          else:
196          import sys            # TODO: Um, something else?
197          GDebug.printMesg(0, "%s in trigger code, value: %s" % (sys.exc_type, sys.exc_value))            raise
198    
199      self.__call__ = thisTrigger      self.__call__ = thisTrigger
200    
# Line 305  class GTriggerExtension: Line 301  class GTriggerExtension:
301      self._trigger = {}      self._trigger = {}
302            
303      #self._validTriggers = validTriggers      #self._validTriggers = validTriggers
304                                            
305    # associateTrigger    # associateTrigger
306    #    #
307    # Associates a trigger with the object.  More than one trigger of a specific type    # Associates a trigger with the object.  More than one trigger of a specific type
# Line 375  def getXMLelements(updates={}): Line 371  def getXMLelements(updates={}):
371    
372    return xmlElements    return xmlElements
373    
374    
375    def _handleTriggerException(self, err):
376      if hasattr(self, 'name'):
377        name = self.name
378      else:
379        name = self.type
380    
381      if isinstance(err, SyntaxError):
382        msg = _('There is an error in one of this document\'s triggers.\n\nTraceback:\n') + \
383              '  Trigger "%s" (%s), line %s' % (name, self.type, err.lineno - 1) + "\n" + \
384              '    ' + err.text[:-1] + "\n" + \
385              '    ' + (' ' * (err.offset-1)) + '^\n' + \
386              'SyntaxError: ' + err.msg
387      else:
388        tp, ec, tb = sys.exc_info()
389        tb = tb.tb_next
390        try:
391          txt = ec.args
392        except:
393          txt = ""
394        msg = _('There is an error in one of this document\'s triggers.\n\nTraceback:\n') + \
395              '  Trigger "%s" (%s), line %s' % (name, self.type, int(tb.tb_lineno) - 1) + "\n" + \
396              '    %s\n' % (ec) + \
397              '%s: %s' % (tp, txt)
398        raise
399      raise TriggerRuntimeError, msg

Legend:
Removed from v.1.35  
changed lines
  Added in v.1.36

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26