This commit is contained in:
恍兮惚兮 2024-11-30 07:10:29 +08:00
parent 696de614ac
commit 57648bd990

View File

@ -103,14 +103,27 @@ class cishubase:
print(markdown_text) print(markdown_text)
lines = markdown_text.split("\n") lines = markdown_text.split("\n")
html_lines = [] html_lines = []
lastli = ""
lideep = 0
def switchli():
nonlocal lideep
while lideep:
html_lines.append("</ul>")
lideep -= 1
lastli = ""
for line in lines: for line in lines:
if line.startswith("# "): if not line:
html_lines.append(f"<h1>{line[2:]}</h1>") continue
elif line.startswith("## "): m = re.match(r"#+ ", line)
html_lines.append(f"<h2>{line[3:]}</h2>") if m:
elif line.startswith("### "): switchli()
html_lines.append(f"<h3>{line[4:]}</h3>") html_lines.append(
"<h{hi}>{inner}</h{hi}>".format(
hi=m.span()[1] - 1, inner=line[m.span()[1] :]
)
)
else: else:
def parsex(line): def parsex(line):
@ -118,26 +131,21 @@ class cishubase:
line = re.sub(r"\*(.*?)\*", r"<em>\1</em>", line) line = re.sub(r"\*(.*?)\*", r"<em>\1</em>", line)
return line return line
if line.startswith("- ") or line.startswith("* "): m = re.match(r" *[-\*] ", line)
html_lines.append(f"<li>{parsex(line[2:])}</li>") if m:
if lastli != m.group():
if len(lastli) < len(m.group()):
html_lines.append("<ul>")
lideep += 1
else:
html_lines.append("</ul>")
lideep -= 1
lastli = m.group()
html_lines.append("<li>{}</li>".format(parsex(line[m.span()[1] :])))
else: else:
html_lines.append(f"<p>{parsex(line)}</p>") switchli()
final_html = [] html_lines.append("<p>{}</p>".format(parsex(line)))
in_list = False
for line in html_lines:
if line.startswith("<li>"):
if not in_list:
final_html.append("<ul>")
in_list = True
final_html.append(line)
elif in_list:
final_html.append("</ul>")
in_list = False
final_html.append(line)
else:
final_html.append(line)
if in_list: switchli()
final_html.append("</ul>")
return "".join(final_html) return "".join(html_lines)