1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
"""
Python Markdown
A Python implementation of John Gruber's Markdown.
Documentation: https://python-markdown.github.io/
GitHub: https://github.com/Python-Markdown/markdown/
PyPI: https://pypi.org/project/Markdown/
Started by Manfred Stienstra (http://www.dwerg.net/).
Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
Currently maintained by Waylan Limberg (https://github.com/waylan),
Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
Copyright 2007-2019 The Python Markdown Project (v. 1.7 and later)
Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
Copyright 2004 Manfred Stienstra (the original version)
License: BSD (see LICENSE.md for details).
"""
from markdown.test_tools import TestCase
from markdown.extensions.toc import TocExtension
class TestTOC(TestCase):
# TODO: Move the rest of the TOC tests here.
def test_escaped_code(self):
self.assertMarkdownRenders(
self.dedent(
'''
[TOC]
# `<test>`
'''
),
self.dedent(
'''
<div class="toc">
<ul>
<li><a href="#test"><test></a></li>
</ul>
</div>
<h1 id="test"><code><test></code></h1>
'''
),
extensions=['toc']
)
def test_escaped_char_in_id(self):
self.assertMarkdownRenders(
r'# escaped\_character',
'<h1 id="escaped_character">escaped_character</h1>',
extensions=['toc']
)
def testAnchorLinkWithCustomClass(self):
self.assertMarkdownRenders(
self.dedent(
'''
# Header 1
## Header *2*
'''
),
self.dedent(
'''
<h1 id="header-1"><a class="custom" href="#header-1">Header 1</a></h1>
<h2 id="header-2"><a class="custom" href="#header-2">Header <em>2</em></a></h2>
'''
),
extensions=[TocExtension(anchorlink=True, anchorlink_class="custom")]
)
def testAnchorLinkWithCustomClasses(self):
self.assertMarkdownRenders(
self.dedent(
'''
# Header 1
## Header *2*
'''
),
self.dedent(
'''
<h1 id="header-1"><a class="custom1 custom2" href="#header-1">Header 1</a></h1>
<h2 id="header-2"><a class="custom1 custom2" href="#header-2">Header <em>2</em></a></h2>
'''
),
extensions=[TocExtension(anchorlink=True, anchorlink_class="custom1 custom2")]
)
def testPermalinkWithEmptyText(self):
self.assertMarkdownRenders(
'# Header',
'<h1 id="header">' # noqa
'Header' # noqa
'<a class="headerlink" href="#header" title="Permanent link"></a>' # noqa
'</h1>', # noqa
extensions=[TocExtension(permalink="")]
)
def testPermalinkWithCustomClass(self):
self.assertMarkdownRenders(
'# Header',
'<h1 id="header">' # noqa
'Header' # noqa
'<a class="custom" href="#header" title="Permanent link">¶</a>' # noqa
'</h1>', # noqa
extensions=[TocExtension(permalink=True, permalink_class="custom")]
)
def testPermalinkWithCustomClasses(self):
self.assertMarkdownRenders(
'# Header',
'<h1 id="header">' # noqa
'Header' # noqa
'<a class="custom1 custom2" href="#header" title="Permanent link">¶</a>' # noqa
'</h1>', # noqa
extensions=[TocExtension(permalink=True, permalink_class="custom1 custom2")]
)
def testPermalinkWithCustomTitle(self):
self.assertMarkdownRenders(
'# Header',
'<h1 id="header">' # noqa
'Header' # noqa
'<a class="headerlink" href="#header" title="custom">¶</a>' # noqa
'</h1>', # noqa
extensions=[TocExtension(permalink=True, permalink_title="custom")]
)
def testPermalinkWithEmptyTitle(self):
self.assertMarkdownRenders(
'# Header',
'<h1 id="header">' # noqa
'Header' # noqa
'<a class="headerlink" href="#header">¶</a>' # noqa
'</h1>', # noqa
extensions=[TocExtension(permalink=True, permalink_title="")]
)
def testPermalinkWithUnicodeInID(self):
from markdown.extensions.toc import slugify_unicode
self.assertMarkdownRenders(
'# Unicode ヘッダー',
'<h1 id="unicode-ヘッター">' # noqa
'Unicode ヘッダー' # noqa
'<a class="headerlink" href="#unicode-ヘッター" title="Permanent link">¶</a>' # noqa
'</h1>', # noqa
extensions=[TocExtension(permalink=True, slugify=slugify_unicode)]
)
def testPermalinkWithUnicodeTitle(self):
from markdown.extensions.toc import slugify_unicode
self.assertMarkdownRenders(
'# Unicode ヘッダー',
'<h1 id="unicode-ヘッター">' # noqa
'Unicode ヘッダー' # noqa
'<a class="headerlink" href="#unicode-ヘッター" title="パーマリンク">¶</a>' # noqa
'</h1>', # noqa
extensions=[TocExtension(permalink=True, permalink_title="パーマリンク", slugify=slugify_unicode)]
)
|