Skip to content

Commit ac53009

Browse files
committed
fix: fix render_toc_url method for rendering empty iterable, via #407
1 parent 34f5a77 commit ac53009

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

src/mistune/toc.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def render_toc_ul(toc: Iterable[Tuple[int, str, str]]) -> str:
8686
if not toc:
8787
return ''
8888

89-
s = '<ul>\n'
89+
s = ''
9090
levels: List[int] = []
9191
for level, k, text in toc:
9292
item = '<a href="#{}">{}</a>'.format(k, text)
@@ -121,4 +121,6 @@ def render_toc_ul(toc: Iterable[Tuple[int, str, str]]) -> str:
121121
s += '</li>\n</ul>\n'
122122
levels.pop()
123123

124-
return s + '</li>\n</ul>\n'
124+
if not s:
125+
return ''
126+
return '<ul>\n' + s + '</li>\n</ul>\n'

tests/test_hooks.py

+3
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,8 @@ def heading_id(token, i):
2222
html = md('# h1')
2323
self.assertEqual(html, '<h1 id="t-1">h1</h1>\n')
2424

25+
def test_render_empty_toc(self):
26+
self.assertEqual(render_toc_ul([]), '')
27+
self.assertEqual(render_toc_ul(filter(lambda _: False, [])), '')
2528

2629
TestTocHook.load_fixtures('hook_toc.txt')

0 commit comments

Comments
 (0)