Mercurial > genshi > mirror
changeset 997:9e30a7234290 stable-0.7.x
Merge r1219 from trunk (fix for PIs without data, fixes #368).
author | hodgestar |
---|---|
date | Sat, 26 Jan 2013 17:28:46 +0000 |
parents | 59a4949b4a39 |
children | 44fb098722ac |
files | genshi/input.py genshi/tests/input.py |
diffstat | 2 files changed, 25 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/genshi/input.py +++ b/genshi/input.py @@ -405,9 +405,14 @@ self._enqueue(TEXT, text) def handle_pi(self, data): - target, data = data.split(None, 1) if data.endswith('?'): data = data[:-1] + try: + target, data = data.split(None, 1) + except ValueError: + # PI with no data + target = data + data = '' self._enqueue(PI, (target.strip(), data.strip())) def handle_comment(self, text):
--- a/genshi/tests/input.py +++ b/genshi/tests/input.py @@ -177,6 +177,25 @@ self.assertEqual('php', target) self.assertEqual('echo "Foobar"', data) + def test_processing_instruction_no_data_1(self): + text = u'<?foo ?>' + events = list(HTMLParser(StringIO(text))) + kind, (target, data), pos = events[0] + self.assertEqual(Stream.PI, kind) + self.assertEqual('foo', target) + self.assertEqual('', data) + + def test_processing_instruction_no_data_2(self): + text = u'<?experiment>...<?/experiment>' + events = list(HTMLParser(StringIO(text))) + kind, (target, data), pos = events[0] + self.assertEqual(Stream.PI, kind) + self.assertEqual('experiment', target) + self.assertEqual('', data) + kind, (target, data), pos = events[2] + self.assertEqual('/experiment', target) + self.assertEqual('', data) + def test_xmldecl(self): text = '<?xml version="1.0" ?><root />' events = list(XMLParser(StringIO(text)))