zhangjf's picture
Update to_md function for illustrating code blocks
1111493
raw
history blame
1.66 kB
def to_md(content):
is_inside_code_block = False
output_spans = []
for i in range(len(content)):
if content[i]=="\n" and not is_inside_code_block:
if len(output_spans)>0 and output_spans[-1].endswith("```"):
output_spans.append("\n")
else:
output_spans.append("<br>")
elif content[i]=="`":
output_spans.append(content[i])
if len(output_spans)>=3 and all([output_spans[j]=="`" for j in [-3,-2,-1]]):
is_inside_code_block = not is_inside_code_block
output_spans = output_spans[:-3]
if is_inside_code_block:
if len(output_spans)==0:
output_spans.append("```")
elif output_spans[-1]=="<br>":
output_spans[-1] = "\n"
output_spans.append("```")
elif output_spans[-1].endswith("\n"):
output_spans.append("```")
else:
output_spans.append("\n```")
if i+1<len(content) and content[i+1]!="\n":
output_spans.append("\n")
else:
if output_spans[-1].endswith("\n"):
output_spans.append("```")
else:
output_spans.append("\n```")
if i+1<len(content) and content[i+1]!="\n":
output_spans.append("\n")
else:
output_spans.append(content[i])
return "".join(output_spans)