[Top][All Lists]
[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)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [OpenTAL-checkins] opental/pax htmlpaxparser.py textpaxparser.py x...,
Fernando Lalo Martins <=