网上有很多mdbook写的 大纲。如果需要将这部分文档搬移到本站,就需要一个转换脚本:
代码如下:
import re, jsonimport sysfilename = sys.argv[1]md = open(filename).read()lines = [ln.rstrip() for ln in md.splitlines() if ln.strip() != ""]# 匹配规则link_re = re.compile(r'^\[([^\]]+)\]\(([^)]+)\)$')li_re = re.compile(r'^(\s*)-\s+\[([^\]]+)\]\(([^)]+)\)')nodes = []curr_folder = Nonenext_id = 1for ln in lines: # 独立链接(README -> 前言) m = link_re.match(ln.strip()) if m: title, href = m.groups() if href.lower().endswith("readme.md"): nodes.append({"id": next_id, "title": "前言", "type": "chapter"}) next_id += 1 continue # 列表项 m = li_re.match(ln) if not m: continue indent, title, href = m.groups() level = len(indent) if level == 0: folder = { "id": next_id, "title": title, "type": "folder", "expanded": True, "children": [] } next_id += 1 nodes.append(folder) curr_folder = folder else: if curr_folder is None: curr_folder = { "id": next_id, "title": "章节", "type": "folder", "expanded": True, "children": [] } next_id += 1 nodes.append(curr_folder) chapter = {"id": next_id, "title": title, "type": "chapter"} next_id += 1 curr_folder["children"].append(chapter)print(json.dumps(nodes, ensure_ascii=False, indent=2))将输出的结果粘贴到本站的 编辑大纲 框里保存即可。
