Edgewall Software

Changeset 1219


Ignore:
Timestamp:
Jan 26, 2013, 6:26:47 PM (11 years ago)
Author:
hodgestar
Message:

Fix handling of processing instructions that don't have data attached (patch from Neil Muller, fixes #368).

Location:
trunk/genshi
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/genshi/input.py

    r1212 r1219  
    402402
    403403    def handle_pi(self, data):
    404         target, data = data.split(None, 1)
    405404        if data.endswith('?'):
    406405            data = data[:-1]
     406        try:
     407            target, data = data.split(None, 1)
     408        except ValueError:
     409            # PI with no data
     410            target = data
     411            data = ''
    407412        self._enqueue(PI, (target.strip(), data.strip()))
    408413
  • trunk/genshi/tests/input.py

    r1189 r1219  
    178178        self.assertEqual('echo "Foobar"', data)
    179179
     180    def test_processing_instruction_no_data_1(self):
     181        text = u'<?foo ?>'
     182        events = list(HTMLParser(StringIO(text)))
     183        kind, (target, data), pos = events[0]
     184        self.assertEqual(Stream.PI, kind)
     185        self.assertEqual('foo', target)
     186        self.assertEqual('', data)
     187
     188    def test_processing_instruction_no_data_2(self):
     189        text = u'<?experiment>...<?/experiment>'
     190        events = list(HTMLParser(StringIO(text)))
     191        kind, (target, data), pos = events[0]
     192        self.assertEqual(Stream.PI, kind)
     193        self.assertEqual('experiment', target)
     194        self.assertEqual('', data)
     195        kind, (target, data), pos = events[2]
     196        self.assertEqual('/experiment', target)
     197        self.assertEqual('', data)
     198
    180199    def test_xmldecl(self):
    181200        text = '<?xml version="1.0" ?><root />'
Note: See TracChangeset for help on using the changeset viewer.