@@ -827,6 +827,25 @@ def testHtmlEntities(self):
827827 {'level' : 1 , 'id' : 'foo-bar' , 'name' : 'Foo & bar' , 'children' : []},
828828 ])
829829
830+ def testHtmlSpecialChars (self ):
831+ """ Test Headers with HTML special characters. """
832+ text = '# Foo > & bar'
833+ self .assertEqual (
834+ self .md .convert (text ),
835+ '<h1 id="foo-bar">Foo > & bar</h1>'
836+ )
837+ self .assertEqual (
838+ self .md .toc ,
839+ '<div class="toc">\n '
840+ '<ul>\n ' # noqa
841+ '<li><a href="#foo-bar">Foo > & bar</a></li>\n ' # noqa
842+ '</ul>\n ' # noqa
843+ '</div>\n '
844+ )
845+ self .assertEqual (self .md .toc_tokens , [
846+ {'level' : 1 , 'id' : 'foo-bar' , 'name' : 'Foo > & bar' , 'children' : []},
847+ ])
848+
830849 def testRawHtml (self ):
831850 """ Test Headers with raw HTML. """
832851 text = '# Foo <b>Bar</b> Baz.'
@@ -1000,35 +1019,40 @@ def testWithAttrList(self):
10001019 md = markdown .Markdown (extensions = ['toc' , 'attr_list' ])
10011020 text = ('# Header 1\n \n '
10021021 '## Header 2 { #foo }\n \n '
1003- '## Header 3 { data-toc-label="Foo Bar"}\n \n '
1004- '# Header 4 { data-toc-label="Foo <b>Baz</b>" }' )
1022+ '## Header 3 { data-toc-label="Foo Bar" }\n \n '
1023+ '# Header 4 { data-toc-label="Foo > Baz" }\n \n '
1024+ '# Header 5 { data-toc-label="Foo <b>Quux</b>" }' )
1025+
10051026 self .assertEqual (
10061027 md .convert (text ),
10071028 '<h1 id="header-1">Header 1</h1>\n '
10081029 '<h2 id="foo">Header 2</h2>\n '
10091030 '<h2 id="header-3">Header 3</h2>\n '
1010- '<h1 id="header-4">Header 4</h1>'
1031+ '<h1 id="header-4">Header 4</h1>\n '
1032+ '<h1 id="header-5">Header 5</h1>'
10111033 )
10121034 self .assertEqual (
10131035 md .toc ,
10141036 '<div class="toc">\n '
1015- '<ul>\n ' # noqa
1016- '<li><a href="#header-1">Header 1</a>' # noqa
1017- '<ul>\n ' # noqa
1018- '<li><a href="#foo">Header 2</a></li>\n ' # noqa
1019- '<li><a href="#header-3">Foo Bar</a></li>\n ' # noqa
1020- '</ul>\n ' # noqa
1021- '</li>\n ' # noqa
1022- '<li><a href="#header-4">Foo Baz</a></li>\n ' # noqa
1023- '</ul>\n ' # noqa
1037+ '<ul>\n ' # noqa
1038+ '<li><a href="#header-1">Header 1</a>' # noqa
1039+ '<ul>\n ' # noqa
1040+ '<li><a href="#foo">Header 2</a></li>\n ' # noqa
1041+ '<li><a href="#header-3">Foo Bar</a></li>\n ' # noqa
1042+ '</ul>\n ' # noqa
1043+ '</li>\n ' # noqa
1044+ '<li><a href="#header-4">Foo > Baz</a></li>\n ' # noqa
1045+ '<li><a href="#header-5">Foo Quux</a></li>\n ' # noqa
1046+ '</ul>\n ' # noqa
10241047 '</div>\n '
10251048 )
10261049 self .assertEqual (md .toc_tokens , [
10271050 {'level' : 1 , 'id' : 'header-1' , 'name' : 'Header 1' , 'children' : [
10281051 {'level' : 2 , 'id' : 'foo' , 'name' : 'Header 2' , 'children' : []},
10291052 {'level' : 2 , 'id' : 'header-3' , 'name' : 'Foo Bar' , 'children' : []}
10301053 ]},
1031- {'level' : 1 , 'id' : 'header-4' , 'name' : 'Foo Baz' , 'children' : []},
1054+ {'level' : 1 , 'id' : 'header-4' , 'name' : 'Foo > Baz' , 'children' : []},
1055+ {'level' : 1 , 'id' : 'header-5' , 'name' : 'Foo Quux' , 'children' : []},
10321056 ])
10331057
10341058 def testUniqueFunc (self ):
0 commit comments