commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r8418 - trunk/gnue-common/src/logic


From: reinhard
Subject: [gnue] r8418 - trunk/gnue-common/src/logic
Date: Tue, 18 Apr 2006 16:04:18 -0500 (CDT)

Author: reinhard
Date: 2006-04-18 16:04:18 -0500 (Tue, 18 Apr 2006)
New Revision: 8418

Modified:
   trunk/gnue-common/src/logic/GTrigger.py
Log:
Moved GTrigger to use new language adapter interface.


Modified: trunk/gnue-common/src/logic/GTrigger.py
===================================================================
--- trunk/gnue-common/src/logic/GTrigger.py     2006-04-18 20:47:44 UTC (rev 
8417)
+++ trunk/gnue-common/src/logic/GTrigger.py     2006-04-18 21:04:18 UTC (rev 
8418)
@@ -37,9 +37,9 @@
 from gnue.common.formatting import GTypecast
 from xml.sax import saxutils
 from gnue.common.definitions.GParserHelpers import GContent
-from gnue.common.logic.language import getLanguageAdapter, RuntimeError
-from gnue.common.logic.language import AbortRequest
 
+from gnue.common.logic import language
+
 # class TriggerError(StandardError):
 #   pass
 #
@@ -74,7 +74,6 @@
 
     GObj.__init__(self, parent, 'GCTrigger')
 
-    self._text=''
     self._triggerns={}
     self._inits   = [None,self.initialize,self.initCall]
 
@@ -113,8 +112,9 @@
     # If the trigger code is given with the trigger, build the call-function
     # right now. This way any referring trigger will find a propery function
     if self.src is None:
-      self.setFunction (self.getChildrenAsContent (), self.language)
+      self.__set_function(self.getChildrenAsContent())
 
+
   # ---------------------------------------------------------------------------
   # Initialize the trigger's call function
   # ---------------------------------------------------------------------------
@@ -126,32 +126,20 @@
     """
 
     if self.src is not None:
-      self.setFunctionFrom (self._root._triggerDictionary [self.src])
+      self.__set_function_from(self._root._triggerDictionary [self.src])
 
 
 
-  def setFunctionFrom(self, object):
+  def __set_function_from(self, object):
     self.__call__ = object.__call__
 
-  def setFunction(self, text, language):
-    global runtime_list
 
-    self._text = text
-    self.language = language
+  def __set_function(self, code):
 
-    engine = getLanguageAdapter (self.language)
-    cx = engine.createNewContext ()
-
-    # define global namespace ('global' directive in python)
-    cx.defineNamespace (self._globalns, asGlobal = True)
-
-    # define local trigger namespace
-    cx.defineNamespace (self._triggerns)
-
     # build a name for the execution context which will be helpful if displayed
     # in error messages
     if self.type == 'NAMED':
-      cx.shortname = "Named trigger %s" % self.name
+      execution_context_name = "Named trigger %s" % self.name
     else:
       path = ""
       p = self
@@ -169,15 +157,26 @@
           p = None
         else:
           p = p.getParent()
-      cx.shortname = path
+      execution_context_name = path
 
+    # Build a name for the function
     if self.name:
-      functionname = self.name
+      function_name = self.name
     else:
-      functionname = self.type.upper()
+      function_name = self.type.upper()
 
-    self.__call__ = cx.buildFunction (functionname, self._text)
+    execution_context = language.create_execution_context(
+            language = self.language,
+            name = execution_context_name,
+            local_namespace = self._triggerns,
+            global_namespace = self._globalns,
+            builtin_namespace = {})
 
+    self.__call__ = execution_context.build_function(
+            name = function_name,
+            parameters = [],
+            code = code)
+
   def dummyFunction(self, myself):
     assert gDebug(1, "Trigger not implemented")
 
@@ -323,7 +322,7 @@
           #   function.updateNamespace()
           try:
             return function(self)
-          except AbortRequest:
+          except language.AbortRequest:
             if not ignoreAbort:
               raise
     else:





reply via email to

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