/[opental]/opental/pax/textpaxparser.py
ViewVC logotype

Diff of /opental/pax/textpaxparser.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by lalo, Thu Nov 28 20:16:08 2002 UTC revision 1.5 by lalo, Thu Feb 20 10:41:19 2003 UTC
# Line 25  def split_ns(spec, default=u''): Line 25  def split_ns(spec, default=u''):
25          return [default, spec]          return [default, spec]
26    
27  class _parse_in_progress(HTMLParser):  class _parse_in_progress(HTMLParser):
28      def __init__(self):      def __init__(self, module):
29          self.result = Document()          self._module = module
30            try:
31                self.result = module.Document()
32            except AttributeError:
33                self.result = Document()
34          self.stack = [self.result]          self.stack = [self.result]
35          self.namespaces = []          self.namespaces = []
36          self.lame_namespaces = {}          self.lame_namespaces = {}
# Line 62  class _parse_in_progress(HTMLParser): Line 66  class _parse_in_progress(HTMLParser):
66          else:          else:
67              nsdecls = {}              nsdecls = {}
68          ns = self.ns(ns)          ns = self.ns(ns)
69          element = core.Element(ns, name, attributes, nsdecls, self.__raw())          element = self._module.Element(ns, name, attributes, nsdecls, self.__raw())
70          element.rawname = rawname          element.rawname = rawname
71          self.stack.append(element)          self.stack.append(element)
72          self.ns_pushed = False          self.ns_pushed = False
# Line 83  class _parse_in_progress(HTMLParser): Line 87  class _parse_in_progress(HTMLParser):
87              self.stack.pop()              self.stack.pop()
88          HTMLParser.close(self)          HTMLParser.close(self)
89          for element in self.result:          for element in self.result:
90              if isinstance(element, core.Element):              if isinstance(element, self._module.Element):
91                  element.lame_namespaces = self.lame_namespaces                  element.lame_namespaces = self.lame_namespaces
92    
93      def handle_decl(self, data):      def handle_decl(self, data):
94          self.stack[-1].append(core.Declaration(data))          self.stack[-1].append(self._module.Declaration(data))
95    
96      def handle_data(self, data):      def handle_data(self, data):
97          self.stack[-1].append(data)          self.stack[-1].append(data)
98    
99      def handle_charref(self, data):      def handle_charref(self, data):
100          self.stack[-1].append(core.CharRef(int(data)))          self.stack[-1].append(self._module.CharRef(int(data)))
101    
102      def handle_entityref(self, data):      def handle_entityref(self, data):
103          self.stack[-1].append(core.EntityRef(data))          self.stack[-1].append(self._module.EntityRef(data))
104    
105      def add_namespace(self, prefix, url):      def add_namespace(self, prefix, url):
106          if self.ns_pushed:          if self.ns_pushed:
# Line 113  class _parse_in_progress(HTMLParser): Line 117  class _parse_in_progress(HTMLParser):
117          self.ns_popped = True          self.ns_popped = True
118            
119      def handle_comment(self, data):      def handle_comment(self, data):
120          self.stack[-1].append(core.Comment(data))          self.stack[-1].append(self._module.Comment(data))
121    
122  def parse(data, builtin_namespaces=None, encoding=None):  def parse(data, builtin_namespaces=None, encoding=None, module=core):
123      if encoding is None:      if encoding is None:
124          # FIXME: can we get the encoding from the HTML?          # FIXME: can we get the encoding from the HTML?
125          encoding = 'latin1'          encoding = 'latin1'
126      if type(data) is type(''):      if type(data) is type(''):
127          data = unicode(data, encoding)          data = unicode(data, encoding)
128      parser = _parse_in_progress()      parser = _parse_in_progress(module)
129      if builtin_namespaces is not None:      if builtin_namespaces is not None:
130          parser.namespaces.append(builtin_namespaces)          parser.namespaces.append(builtin_namespaces)
131      parser.feed(data)      parser.feed(data)

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26