diff --git a/AUTHORS.rst b/AUTHORS.rst index 4148a6ed..30179025 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -32,3 +32,4 @@ Patches and suggestions - Juan Carlos Garcia Segovia - Mike West - Marc DM +- Sam Cooke diff --git a/CHANGES.rst b/CHANGES.rst index 1431b3c9..f93dd4d7 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -6,6 +6,8 @@ Change Log Released on XXX, 2014 +* Fix: SVG end tags were not being adjusted + * XXX diff --git a/html5lib/html5parser.py b/html5lib/html5parser.py index 9be3e134..eab177ad 100644 --- a/html5lib/html5parser.py +++ b/html5lib/html5parser.py @@ -2445,6 +2445,8 @@ def processStartTag(self, token): def processEndTag(self, token): nodeIndex = len(self.tree.openElements) - 1 node = self.tree.openElements[-1] + if node.namespace == namespaces["svg"]: + self.adjustSVGTagNames(token) if node.name != token["name"]: self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) diff --git a/html5lib/tests/test_parser2.py b/html5lib/tests/test_parser2.py index 20bbdf31..30aa0a54 100644 --- a/html5lib/tests/test_parser2.py +++ b/html5lib/tests/test_parser2.py @@ -51,6 +51,10 @@ def test_unicode_file(self): parser = html5parser.HTMLParser() parser.parse(io.StringIO("a")) + def test_svg_token(self): + parser = html5parser.HTMLParser(strict=True) + parser.parseFragment("") + def buildTestSuite(): return unittest.defaultTestLoader.loadTestsFromName(__name__)