opental-checkins
[Top][All Lists]
Advanced

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

[OpenTAL-checkins] opental/pax core.py paxtransform.py setup.py xm...


From: Fernando Lalo Martins
Subject: [OpenTAL-checkins] opental/pax core.py paxtransform.py setup.py xm...
Date: Wed, 26 Feb 2003 14:59:14 -0500

CVSROOT:        /cvsroot/opental
Module name:    opental
Changes by:     Fernando Lalo Martins <address@hidden>  03/02/26 14:59:14

Modified files:
        pax            : core.py paxtransform.py setup.py 
                         xmlpaxparser.py 

Log message:
        paxtransform now allows handlers to set error treatment - see OpenTAL 
for an example of how to use it

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/opental/opental/pax/core.py.diff?tr1=1.15&tr2=1.16&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/opental/opental/pax/paxtransform.py.diff?tr1=1.23&tr2=1.24&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/opental/opental/pax/setup.py.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/opental/opental/pax/xmlpaxparser.py.diff?tr1=1.9&tr2=1.10&r1=text&r2=text

Patches:
Index: opental/pax/core.py
diff -u opental/pax/core.py:1.15 opental/pax/core.py:1.16
--- opental/pax/core.py:1.15    Fri Feb 21 13:37:05 2003
+++ opental/pax/core.py Wed Feb 26 14:59:14 2003
@@ -203,3 +203,7 @@
 
     def __repr__(self):
         return '<Literal %s>' % repr(self.text)
+
+    def pack(self):
+        "do nothing, since this is already an immutable leaf"
+        pass
Index: opental/pax/paxtransform.py
diff -u opental/pax/paxtransform.py:1.23 opental/pax/paxtransform.py:1.24
--- opental/pax/paxtransform.py:1.23    Mon Jan 27 02:10:54 2003
+++ opental/pax/paxtransform.py Wed Feb 26 14:59:14 2003
@@ -27,6 +27,12 @@
             handler = optional
         self.handlers += ((ns, hash(ns), handler),)
 
+    def pop_error_handler(self, context):
+        if hasattr(context, 'error_handler'):
+            handler = context.error_handler
+            del context.error_handler
+            return handler
+
     def initialize(self, context):
         context.tr_engine = self
         context.postprocess_queue = []
@@ -76,10 +82,25 @@
             if type(result) is types.ListType:
                 # further mark it as "immutable"
                 result = tuple(result)
+        except:
+            error_handler = self.pop_error_handler(context)
+            if error_handler:
+                result = error_handler()
+            else:
+                context.postprocess_queue.pop()
+                raise
         else:
             if not hasattr(result, 'join'):
-                for index, child in enumerate(result):
-                    result[index] = self.transform(child, context)
+                error_handler = self.pop_error_handler(context)
+                try:
+                    for index, child in enumerate(result):
+                        result[index] = self.transform(child, context)
+                except:
+                    if error_handler:
+                        result = error_handler()
+                    else:
+                        context.postprocess_queue.pop()
+                        raise
         try:
             result.pack()
         except AttributeError:
@@ -87,6 +108,7 @@
                 result = pack_list(result)
             except:
                 pass
+        self.pop_error_handler(context)
         try:
             result = self.postprocess(result, context)
         except StopTransform, data:
Index: opental/pax/setup.py
diff -u opental/pax/setup.py:1.5 opental/pax/setup.py:1.6
--- opental/pax/setup.py:1.5    Sun Dec 29 19:05:41 2002
+++ opental/pax/setup.py        Wed Feb 26 14:59:14 2003
@@ -1,12 +1,24 @@
 #!/usr/bin/env python
 
+# patch distutils if it can't cope with the "classifiers" keyword
+import sys
+if sys.version < '2.2.3':
+    from distutils.dist import DistributionMetadata
+    DistributionMetadata.classifiers = None
+
 from distutils.core import setup
 setup (name = "pax",
-       version = "1.0",
+       version = "1.0alpha",
        description = "The Pythonic API for XML",
+       long_description = "A DOM-like library for handling structure 
(typically XML) data in a way that makes sense for python programmers",
+       keywords = "xml library transform",
+       classifiers = [
+           'Topic :: Text Processing :: Markup :: XML'
+       ],
        author = "Lalo Martins",
        author_email = "address@hidden",
        url = "http://python.laranja.org/pax/";,
+       license = "public domain",
        package_dir = {'pax':'.'},
-       packages = ['pax']
+       packages = ['pax'],
        )
Index: opental/pax/xmlpaxparser.py
diff -u opental/pax/xmlpaxparser.py:1.9 opental/pax/xmlpaxparser.py:1.10
--- opental/pax/xmlpaxparser.py:1.9     Thu Feb 20 05:41:19 2003
+++ opental/pax/xmlpaxparser.py Wed Feb 26 14:59:14 2003
@@ -28,7 +28,10 @@
         parser.EndNamespaceDeclHandler = self.pop_namespace
         parser.CommentHandler = self.comment
         parser.returns_unicode = True
-        parser.buffer_text = True
+        try:
+            parser.buffer_text = True
+        except AttributeError:
+            pass
 
     def __raw(self):
         return self.parser.GetInputContext().split('>')[0] + u'>'




reply via email to

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