opental-checkins
[Top][All Lists]
Advanced

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

[OpenTAL-checkins] opental/pax htmlpaxparser.py textpaxparser.py x...


From: Fernando Lalo Martins
Subject: [OpenTAL-checkins] opental/pax htmlpaxparser.py textpaxparser.py x...
Date: Thu, 20 Feb 2003 05:41:20 -0500

CVSROOT:        /cvsroot/opental
Module name:    opental
Changes by:     Fernando Lalo Martins <address@hidden>  03/02/20 05:41:19

Modified files:
        pax            : htmlpaxparser.py textpaxparser.py 
                         xmlpaxparser.py 

Log message:
        allow a different module to be used as the source of paxtree classes; 
this can be used for example to get Persistent (as in ZODB.Persistence) paxtrees

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/opental/opental/pax/htmlpaxparser.py.diff?tr1=1.18&tr2=1.19&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/opental/opental/pax/textpaxparser.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/opental/opental/pax/xmlpaxparser.py.diff?tr1=1.8&tr2=1.9&r1=text&r2=text

Patches:
Index: opental/pax/htmlpaxparser.py
diff -u opental/pax/htmlpaxparser.py:1.18 opental/pax/htmlpaxparser.py:1.19
--- opental/pax/htmlpaxparser.py:1.18   Wed Oct  9 18:19:28 2002
+++ opental/pax/htmlpaxparser.py        Thu Feb 20 05:41:18 2003
@@ -38,13 +38,13 @@
         if element.name in raw:
             element.__class__ = Raw_HTML_Element
 
-def parse(data, builtin_namespaces=None, encoding=None):
+def parse(data, builtin_namespaces=None, encoding=None, module=core):
     if encoding is None:
         # FIXME: can we get the encoding from the HTML?
         encoding = 'latin1'
     if type(data) is type(''):
         data = unicode(data, encoding)
-    parser = _parse_in_progress()
+    parser = _parse_in_progress(module)
     if builtin_namespaces is not None:
         parser.namespaces.append(builtin_namespaces)
     parser.feed(data)
Index: opental/pax/textpaxparser.py
diff -u opental/pax/textpaxparser.py:1.4 opental/pax/textpaxparser.py:1.5
--- opental/pax/textpaxparser.py:1.4    Thu Nov 28 15:16:08 2002
+++ opental/pax/textpaxparser.py        Thu Feb 20 05:41:19 2003
@@ -25,8 +25,12 @@
         return [default, spec]
 
 class _parse_in_progress(HTMLParser):
-    def __init__(self):
-        self.result = Document()
+    def __init__(self, module):
+        self._module = module
+        try:
+            self.result = module.Document()
+        except AttributeError:
+            self.result = Document()
         self.stack = [self.result]
         self.namespaces = []
         self.lame_namespaces = {}
@@ -62,7 +66,7 @@
         else:
             nsdecls = {}
         ns = self.ns(ns)
-        element = core.Element(ns, name, attributes, nsdecls, self.__raw())
+        element = self._module.Element(ns, name, attributes, nsdecls, 
self.__raw())
         element.rawname = rawname
         self.stack.append(element)
         self.ns_pushed = False
@@ -83,20 +87,20 @@
             self.stack.pop()
         HTMLParser.close(self)
         for element in self.result:
-            if isinstance(element, core.Element):
+            if isinstance(element, self._module.Element):
                 element.lame_namespaces = self.lame_namespaces
 
     def handle_decl(self, data):
-        self.stack[-1].append(core.Declaration(data))
+        self.stack[-1].append(self._module.Declaration(data))
 
     def handle_data(self, data):
         self.stack[-1].append(data)
 
     def handle_charref(self, data):
-        self.stack[-1].append(core.CharRef(int(data)))
+        self.stack[-1].append(self._module.CharRef(int(data)))
 
     def handle_entityref(self, data):
-        self.stack[-1].append(core.EntityRef(data))
+        self.stack[-1].append(self._module.EntityRef(data))
 
     def add_namespace(self, prefix, url):
         if self.ns_pushed:
@@ -113,15 +117,15 @@
         self.ns_popped = True
     
     def handle_comment(self, data):
-        self.stack[-1].append(core.Comment(data))
+        self.stack[-1].append(self._module.Comment(data))
 
-def parse(data, builtin_namespaces=None, encoding=None):
+def parse(data, builtin_namespaces=None, encoding=None, module=core):
     if encoding is None:
         # FIXME: can we get the encoding from the HTML?
         encoding = 'latin1'
     if type(data) is type(''):
         data = unicode(data, encoding)
-    parser = _parse_in_progress()
+    parser = _parse_in_progress(module)
     if builtin_namespaces is not None:
         parser.namespaces.append(builtin_namespaces)
     parser.feed(data)
Index: opental/pax/xmlpaxparser.py
diff -u opental/pax/xmlpaxparser.py:1.8 opental/pax/xmlpaxparser.py:1.9
--- opental/pax/xmlpaxparser.py:1.8     Thu Nov 28 15:16:08 2002
+++ opental/pax/xmlpaxparser.py Thu Feb 20 05:41:19 2003
@@ -13,7 +13,8 @@
         return default, spec
 
 class _parse_in_progress(object):
-    def __init__(self, parser):
+    def __init__(self, parser, module):
+        self._module = module
         self.stack = []
         self.namespaces = []
         self.ns_pushed = False
@@ -42,7 +43,7 @@
             nsdecls = self.namespaces[0]
         else:
             nsdecls = {}
-        self.stack.append(core.Element(ns, name, attributes, nsdecls, 
self.__raw()))
+        self.stack.append(self._module.Element(ns, name, attributes, nsdecls, 
self.__raw()))
         self.ns_pushed = False
 
     def end_element(self, name):
@@ -54,7 +55,7 @@
         self.ns_popped = False
 
     def processing_instruction(self, *a):
-        self.stack[-1].append(core.Declaration(self.__raw()[2:-1]))
+        self.stack[-1].append(self._module.Declaration(self.__raw()[2:-1]))
 
     def text(self, data):
         self.stack[-1].append(data)
@@ -74,14 +75,14 @@
         self.ns_popped = True
     
     def comment(self, data):
-        self.stack[-1].append(core.Comment(data))
+        self.stack[-1].append(self._module.Comment(data))
 
 
 import xml.parsers.expat
 
-def parse(data, builtin_namespaces=None, encoding=None):
+def parse(data, builtin_namespaces=None, encoding=None, module=core):
     parser = xml.parsers.expat.ParserCreate(namespace_separator=' ')
-    handler = _parse_in_progress(parser)
+    handler = _parse_in_progress(parser, module)
     if builtin_namespaces is not None:
         handler.namespaces.append(builtin_namespaces)
     parser.Parse(data, 1)




reply via email to

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