[Top][All Lists]
[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