commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnue-common/src/logic GTrigger.py


From: Jason Cater
Subject: gnue-common/src/logic GTrigger.py
Date: Mon, 21 Jul 2003 23:18:18 -0400

CVSROOT:        /cvsroot/gnue
Module name:    gnue-common
Branch:         
Changes by:     Jason Cater <address@hidden>    03/07/21 23:18:18

Modified files:
        src/logic      : GTrigger.py 

Log message:
        more trigger exception handling

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-common/src/logic/GTrigger.py.diff?tr1=1.35&tr2=1.36&r1=text&r2=text

Patches:
Index: gnue-common/src/logic/GTrigger.py
diff -c gnue-common/src/logic/GTrigger.py:1.35 
gnue-common/src/logic/GTrigger.py:1.36
*** gnue-common/src/logic/GTrigger.py:1.35      Mon Jul 21 22:24:59 2003
--- gnue-common/src/logic/GTrigger.py   Mon Jul 21 23:18:18 2003
***************
*** 38,46 ****
  from xml.sax import saxutils
  from gnue.common.definitions.GParserHelpers import GContent
  
! class TriggerError:
!   def __init__(self, msg):
!     self.msg = msg
  
  class TriggerAbort:
    pass
--- 38,48 ----
  from xml.sax import saxutils
  from gnue.common.definitions.GParserHelpers import GContent
  
! class TriggerError(StandardError):
!   pass
! 
! class TriggerRuntimeError(StandardError):
!   pass
  
  class TriggerAbort:
    pass
***************
*** 160,180 ****
      try:
        self._code = compile(revisedTriggerCode, '<string>', 'exec')
      except SyntaxError, err:
!       try:
!         name = self.name
!       except:
!         name = self.type
! 
! 
!       print dir(err)
!       GDebug.printMesg(0, "Syntax error in line %s of trigger in element ??" \
!             % ( err.lineno ))
!       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
  
      def thisTrigger(myself, code = self._code,
                      triggerns = self._triggerns,
--- 162,176 ----
      try:
        self._code = compile(revisedTriggerCode, '<string>', 'exec')
      except SyntaxError, err:
!       _handleTriggerException(self, err)
! #      GDebug.printMesg(0, "Syntax error in line %s of trigger in element ??" 
\
! #            % ( err.lineno ))
! #      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
  
      def thisTrigger(myself, code = self._code,
                      triggerns = self._triggerns,
***************
*** 192,204 ****
  
          # And execute our code
          exec code in globalns, localns
!       except TriggerError:
!         raise
!       except:
!         # May be better to deal with this in GTriggerExtension
!         raise
!         import sys
!         GDebug.printMesg(0, "%s in trigger code, value: %s" % (sys.exc_type, 
sys.exc_value))
  
      self.__call__ = thisTrigger
  
--- 188,200 ----
  
          # And execute our code
          exec code in globalns, localns
!       except StandardError, err:
!         if not isinstance(err, TriggerError):
!           # May be better to deal with this in GTriggerExtension
!           _handleTriggerException(self, err)
!         else:
!           # TODO: Um, something else?
!           raise
  
      self.__call__ = thisTrigger
  
***************
*** 305,311 ****
      self._trigger = {}
      
      #self._validTriggers = validTriggers 
!                                         
    # associateTrigger
    #
    # Associates a trigger with the object.  More than one trigger of a 
specific type
--- 301,307 ----
      self._trigger = {}
      
      #self._validTriggers = validTriggers 
! 
    # associateTrigger
    #
    # Associates a trigger with the object.  More than one trigger of a 
specific type
***************
*** 375,377 ****
--- 371,399 ----
  
    return xmlElements
  
+ 
+ def _handleTriggerException(self, err):
+   if hasattr(self, 'name'):
+     name = self.name
+   else:
+     name = self.type
+ 
+   if isinstance(err, SyntaxError):
+     msg = _('There is an 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-1)) + '^\n' + \
+           'SyntaxError: ' + err.msg
+   else:
+     tp, ec, tb = sys.exc_info()
+     tb = tb.tb_next
+     try:
+       txt = ec.args
+     except:
+       txt = ""
+     msg = _('There is an error in one of this document\'s 
triggers.\n\nTraceback:\n') + \
+           '  Trigger "%s" (%s), line %s' % (name, self.type, 
int(tb.tb_lineno) - 1) + "\n" + \
+           '    %s\n' % (ec) + \
+           '%s: %s' % (tp, txt)
+     raise
+   raise TriggerRuntimeError, msg




reply via email to

[Prev in Thread] Current Thread [Next in Thread]