ul und li navigation build geht
This commit is contained in:
1 parent
dc1b35f344
commit
5acf8ad0e7
7 files changed
+122
-54
No files matched your search
@@ -111,7 +111,7 @@ def md_to_html(text, headings=None):
|
||||
else:
|
||||
used_ids[hid] = 0
|
||||
if headings is not None:
|
||||
headings.append((hid, text_h))
|
||||
headings.append((level, hid, text_h))
|
||||
out.append('<h%d id="%s">%s</h%d>'
|
||||
% (level, hid, inline(_escape(text_h)), level))
|
||||
i += 1
|
||||
@@ -181,11 +181,37 @@ def _slugify(s):
|
||||
|
||||
|
||||
def heading_nav(headings):
|
||||
"""Baut die Anker-Linkliste (Text-Links auf die Ueberschriften der Seite)."""
|
||||
"""Baut die Anker-Navigation als verschachtelte ul/li-Liste:
|
||||
Eine Ueberschrift mit einem # mehr als die vorherige wird als
|
||||
Unterpunkt eingerueckt.
|
||||
headings: Liste von (level, anker, text).
|
||||
"""
|
||||
if not headings:
|
||||
return ""
|
||||
return "".join('<a href="#%s">%s</a>' % (hid, _escape(text))
|
||||
for hid, text in headings)
|
||||
parts = []
|
||||
levels = []
|
||||
for level, hid, text in headings:
|
||||
if not levels:
|
||||
# erste Ueberschrift: aeusserste Liste oeffnen
|
||||
parts.append("<ul>")
|
||||
levels.append(level)
|
||||
elif level > levels[-1]:
|
||||
# tiefer -> neue verschachtelte Liste im letzten <li>
|
||||
parts.append("<ul>")
|
||||
levels.append(level)
|
||||
else:
|
||||
# gleiche oder hoehere Ebene -> Listen schliessen bis Ebene passt
|
||||
while len(levels) > 1 and levels[-1] > level:
|
||||
parts.append("</li></ul>")
|
||||
levels.pop()
|
||||
parts.append("</li>")
|
||||
parts.append('<li><a href="#%s">%s</a>' % (hid, _escape(text)))
|
||||
parts.append("</li>")
|
||||
while len(levels) > 1:
|
||||
parts.append("</ul></li>")
|
||||
levels.pop()
|
||||
parts.append("</ul>")
|
||||
return "".join(parts)
|
||||
|
||||
|
||||
# ------------------------------------------------------------------- seiten
|
||||
|
||||
Reference in new issue
Block a user